Zum Inhalt springen

RealURL

Erstellt am 11. August 2007 · 28 Antworten · letzte Antwort am 15. Dezember 2009 · Seite 1 von 2

Tags: Frage

Unbekannter Benutzer ·

Hallo zusammen,

hier eine kleine Anleitung, wie ich RealURL für mich zum Laufen gebracht habe.

Nach der Installation (und nach dem Einstellen des Templates und der .htaccess) hatte ich einige Probleme, deren Lösung ich ausführlicher schildere.

Ein Problem war, dass ich statt Unterseiten nur einen Fehler 404 angezeigt bekam.
Außerdem: Firefox verlinkte Dateien (Stylesheets, Bilder usw.) nicht richtig: Die Links verwiesen, wenn man im Seitenbaum in einem Unterordner war, in diese Unterordner.

Zur Lösung:
Funktioniert mit den aktuellen Versionen Typo3 4.1.2 und RealURL 1.1.4.

Meine .htaccess:

RewriteEngine On
Options +FollowSymLinks

RewriteBase /

RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]

RewriteRule ^(typo3|banner|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ 	- [L] 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule (\.html|/)$ index.php

#RewriteRule .* index.php

Beachte: RewriteBase muss (wenn Typo3 direkt im Root-Ordner installiert ist) wie oben zu sehen eingetragen werden!

Auszug aus meinem Typoscript (im Template):

# RealURL aktivieren
config.simulateStaticDocuments = 0
config.baseURL = http://www.seite.de/
config.tx_realurl_enable = 1
config.prefixLocalAnchors = all

Beachte hier: bei config.baseURL muss auf jeden Fall auch das http:// mit angegeben werden, sonst erzeugt der Firefox (Version 2.0.0.6) Links, die in den aktuellen Ordner verweisen, anstatt den ausgegebenen base-Tag zu verwenden.
Auch darf der Slash am Ende nicht fehlen, sonst findet der Internet Explorer die Seiten nicht und gibt den entsprechenden Fehler 404 aus.

Die ext_localconf.php (im Ordner typo3conf/ext/realurl/) habe ich mit folgendem Code bestückt.

<?php
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tstemplate.php'] ['linkData-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['tslib/class.tslib_fe.php'] ['checkAlternativeIdMethods-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urldecodecache']
= 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urlencodecache']
= 'tx_realurl_urlencodecache';
$TYPO3_CONF_VARS['FE'] ['addRootLineFields'] .=
',tx_realurl_pathsegment,alias,nav_title,title';

$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array(

	'init' => array(
		'enableCHashCache' => 1,
                 'appendMissingSlash' => 'ifNotFile',
                 'enableUrlDecodeCache' => 1,
		'enableUrlEncodeHash' => 1,
		// 'postVarSet_failureMode' => 'redirect_goodUpperDir',
	),

         'redirects' => array(
         ),
         /* 'rewrite' => array(
	 ), */

	'preVars' => array(
		/*                                 array(
			'GETvar' => 'no_cache',
			'valueMap' => array(
				'nc' => 1,
			),
			'noMatch' => 'bypass',
		),   */
                 /*
		array(
			'GETvar' => 'L',
			'valueMap' => array(
				'de' => '0',
				'en' => '1',
			),
			'valueDefault' => 'de',
		),
		*/
	),

         'pagePath' => array(
		'type' => 'user',
		'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
		'spaceCharacter' => '-',
		'languageGetVar' => 'L',
		// 'firstHitPathCache' => 1,
                 'expireDays' => 3,
		// ------------> hier unbedingt die id der Rootseite anpassen!!! <------------
		'rootpage_id' => '1'
	),

         'fileName' => array (
		'defaultToHTMLsuffixOnPrev' => 1,
		'index' => array(
			/*'index.html' => array(*/
				'keyValues' => array (
					/*'type' => 1,*/
				),
			/*),*/
		),
	),

         'fixedPostVarSets' => array(
	),

	'postVarSets' => array(
	),
);
?>

Beachte: Die id zur Rootseite muss entsprechend der jeweiligen Installation angepasst werden.

Nach jeder Änderung in dieser Datei müssen im Backend die Caches geleert werden.
Erst danach die Seite neu aufrufen (Browsercache evtl. vorher leeren) und das Ergebnis ansehen.

Ergebnis
Alle Seiten sind aufrufbar, nicht unterstützt wird so ein Schnickschnack wie etwa Sprachen, Druckansicht usw...
[Ich würd mich über entsprechende Ergänzungen aber freuen! 🙂]

Zur Frage: Wie krieg ich jetzt Ordner hin?
Bsp.:
Ich habe einen Baum mit folgenden Seiten:
- Hobby
-- Drachenfliegen
-- Rasenmähen

Ohne weitere Eingabe werden von RealURL automatisch folgende Pfade erzeugt:
hobby.html
hobby/drachenfliegen.html
hobby/rasenmaehen.html

Will man die Namen des Unterordners (im Beispiel also das hobby/drachenfliegen.html) ändern, ist folgendes zu tun:
Es muss bei der Seite darüber der Seitentyp auf Erweitert gestellt werden, hier also bei Hobby.
Dadurch wird das Feld "Speaking URL path segment" sichtbar.
In dieses muss man den Namen des Ordners eintragen, den die Unterseiten im Pfad haben sollen.
Trägt man hier etwa "freizeit" ein (ohne die Anführungsstriche), so ergibt sich folgendes:
hobby.html
freizeit/drachenfliegen.html
freizeit/rasenmaehen.html

Den Namen der Datei hobby.html selbst kann man ändern, indem man ihr einen alias zuweist (muss im System einmalig sein).

===

Ich hoffe, das hilft wem, würd mich freuen. :-)

Unbekannter Benutzer · · Beste Antwort

Man, welch eine Ehre. 🙂

Ich hab aber auch verdammt lange dran gesessen.
Da hab ich mir gedacht, dass es für mich jetzt auch nicht mehr DER Aufwand ist, zusammenzufassen, was ich gemacht hab und wo für mich die Knackpunkte waren.

Und ich hoffe mal, dass Andere da auf die gleichen Probleme stoßen. 🙂

Was man noch ausführlicher machen kann wäre eine Erläuterung der Funktionen in ext_localconf.php. *Botschaft*
😉

Unbekannter Benutzer ·

Frage: Jetzt funktionieren meine Anker nicht...

Beispiel: Typo3 bietet ja die Möglichkeit einen "nach Oben"-Link einzufügen.
Der sieht dann etwa so aus:

<a href="#top">nach oben</a>

Problem: Für RealURL muss man ja einen base-Tag setzen:

<base href="http://www.seite.de/" />

Deshalb verweist, egal auf welcher Seite man gerade ist, der Anker auf die Startseite und da auf #top, anstatt auf die aktuelle Seite.

Lösung:
Im Typoscript das Erscheinungsbild anpassen:

tt_content.stdWrap.innerWrap2 = |<div class="nach_oben"><a href="{TSFE:siteScript}#top">nach oben</a></div>

Statt "div class..." kann natürlich alles Mögliche verwendet werden, entscheidend ist im Link der Teil {TSFE:siteScript}, der an dieser Stelle den Pfad zur aktuellen Seite einfügt. 🙂

actraiser ·

hallo, danke für die anleitung!

Kann man auch einen Ordner überspringen in der Anzeige?

Ich habe folgende Struktur

seiten (als Knoten quasi zur Strukturierung im Backend)
seiten/kontakt
seiten/impressum
seiten/feedback

Seit dem Update von RealURL 0.3.0 auf die aktuelle Version 1.1.4 rendert RealURL die Seiten folgendermassen:

http://www.website.de/seiten/kontakt.html

Mit RealURL 0.3.0 wird das gewünschte Ergebnis ausgebeben:

http://www.website.de/kontakt.html

Ich bin mir jetzt nicht sicher ob hier die Konfiguration das Problem ist oder ob RealURL 0.3.0 das Ganze einfach anders gehandhabt hat.

Grüße
-act

Gjergj ·

Hallo Leute,

also ich denke das ich alles richtig gemacht habe aber es taucht immer wieder der selbe fehler auf:

Parse error: parse error, unexpected T_STRING, expecting ')' in /kunden/......../......./typo3/typo3conf/localconf.php on line 45

...habe die neuste Typo3 und realURL versionen, kann mir jemand weiter helfen?

Gruß

Gjergj

automatix ·
Gjergj schrieb

Hallo Leute,

also ich denke das ich alles richtig gemacht habe aber es taucht immer wieder der selbe fehler auf:

Parse error: parse error, unexpected T_STRING, expecting ')' in /kunden/......../......./typo3/typo3conf/localconf.php on line 45

...habe die neuste Typo3 und realURL versionen, kann mir jemand weiter helfen?

Gruß

Gjergj

Hallo Gjergj,

wird ein Syntaxfehler sein -- irgenwo ein Semikolon zu viel / zu wenig oder Ähliches... Checke nochmal deinen PHP-Code in der localconf.php.

InforMedic ·
automatix schrieb
Gjergj schrieb

Parse error: parse error, unexpected T_STRING, expecting ')' in /kunden/......../......./typo3/typo3conf/localconf.php on line 45

Hallo Gjergj,

wird ein Syntaxfehler sein -- irgenwo ein Semikolon zu viel / zu wenig oder Ähliches... Checke nochmal deinen PHP-Code in der localconf.php.

unexpected T_STRING bedeutet immer das ein abschliessendes Zeichen (semikolon, klammern, etc) fehlt oder zuviel ist!!!

Tipp: z.B. kann ich mir in Zend Studio bei positionierung des cursors an das ende eines brackets -> also nach einem ], ) oder } das zugehörige öffnende bracket [, ( oder { anzeigen lassen - womit ich dann wiederum überprüfen kann ob auch wirklich jede Verzeigung geschlossen wird!

Gruß
Info

Gjergj ·

Aber ich nutze den selben PHP-Script:

<?php
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tstemplate.php'] ['linkData-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['tslib/class.tslib_fe.php'] ['checkAlternativeIdMethods-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urldecodecache']
= 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urlencodecache']
= 'tx_realurl_urlencodecache';
$TYPO3_CONF_VARS['FE'] ['addRootLineFields'] .=
',tx_realurl_pathsegment,alias,nav_title,title';

$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array(

        'init' => array(
                'enableCHashCache' => 1,
                 'appendMissingSlash' => 'ifNotFile',
                 'enableUrlDecodeCache' => 1,
                'enableUrlEncodeHash' => 1,
                // 'postVarSet_failureMode' => 'redirect_goodUpperDir',
        ),

         'redirects' => array(
         ),
         /* 'rewrite' => array(
         ), */

        'preVars' => array(
                /*                                 array(
                        'GETvar' => 'no_cache',
                        'valueMap' => array(
                                'nc' => 1,
                        ),
                        'noMatch' => 'bypass',
                ),   */
                 /*
                array(
                        'GETvar' => 'L',
                        'valueMap' => array(
                                'de' => '0',
                                'en' => '1',
                        ),
                        'valueDefault' => 'de',
                ),
                */
        ),

         'pagePath' => array(
                'type' => 'user',
                'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
                'spaceCharacter' => '-',
                'languageGetVar' => 'L',
                // 'firstHitPathCache' => 1,
                 'expireDays' => 3,
                // ------------> hier unbedingt die id der Rootseite anpassen!!! <------------
                'rootpage_id' => '1'
        ),

         'fileName' => array (
                'defaultToHTMLsuffixOnPrev' => 1,
                'index' => array(
                        /*'index.html' => array(*/
                                'keyValues' => array (
                                        /*'type' => 1,*/
                                ),
                        /*),*/
                ),
        ),

         'fixedPostVarSets' => array(
        ),

        'postVarSets' => array(
        ),
);
?>

und alles andere habe ich auch gemacht, ich habe sogar von PHP4 auf PHP5 umgestellt!

...ach ja ich habe 2 .htaccess-dateien einmal im typo3-ordner und einmal auf meinem FTP-Acc, in welcher datei muss ich den script einfügen!

automatix ·
Gjergj schrieb

Aber ich nutze den selben PHP-Script:

und alles andere habe ich auch gemacht, ich habe sogar von PHP4 auf PHP5 umgestellt!

...ach ja ich habe 2 .htaccess-dateien einmal im typo3-ordner und einmal auf meinem FTP-Acc, in welcher datei muss ich den script einfügen!

Nicht in die .htaccess? Das ist ein PHP-Script und man muss es in die Datei localconf.php (Verzeichnis /typo3conf/) einfügen. Ein PHP-Chunk fängt (meistens) mit <?php und endet (meistens) mit ?>. Achte darauf, dass Du PHP-Blöcke nicht ineinander verschachtelst. Also, wenn Du z.B. PHP-Code kopierst, dann füge ihn ohne <?php und ?> in einen bereits vorhandenen Block Deiner localconf.php oder mit <?php und ?> außerhalb der bestehenden Blöcke.

Gjergj ·

OMG ich habe doch nicht den PHP-Script in die .htaccess-datei eingefügt, es sind
2 .htaccess-dateien vorhanden und ich wollte nur wissen in welcher .htaccess-datei ich den dafür bestimmten script einfügen muss? Und in PHP bin ich auch schon so weit!!!!

....nein nein es muss an etwas anderm liegen!!!!

------------------------------------------------------------------------------------
Das selbe passiert auch wenn ich den script in die 'ext_localconf.php' einbinde:

Parse error: parse error, unexpected T_STRING, expecting ')' in /kunden/......./......./typo3/typo3conf/temp_CACHED_ps6774_ext_localconf.php on line 339

'init' => array(
'enableCHashCache' => 1,
'appendMissingSlash' => 'ifNotFile',
'enableUrlDecodeCache' => 1,
'enableUrlEncodeHash' => 1,
// 'postVarSet_failureMode' => 'redirect_goodUpperDir',
),
------------------------------------------------------------------------------------

.....trozdem danke automatix

Gruß

Gjergj

automatix ·
Gjergj schrieb

OMG ich habe doch nicht den PHP-Script in die .htaccess-datei eingefügt, es sind
2 .htaccess-dateien vorhanden und ich wollte nur wissen in welcher .htaccess-datei ich den dafür bestimmten script einfügen muss? Und in PHP bin ich auch schon so weit!!!!

Kein Grund, sich so aufzuregen -- wie weit Du in PHP bist, kann/muss hier keiner voher wissen...

Zu Deiner Frage, welche .htaccess-Datei angepasst werden muss: "You should put the supplied sample .htaccess file (called _.htaccess) in the root of your TYPO3-installation."

Was mit der temp_CACHED_ps6774_ext_localconf.php nich stimmt, seh ich hier nicht.

Gruß,
Ilya

Unbekannter Benutzer ·

@ Gjergj: Du musst die .htaccess ändern, die auf einer Ebene mit fileadmin, typo3conf, index.php und so weiter liegt.
Lösch doch bitte auch mal den Cache in typo3conf. Musst du nach jeder Änderung an der ext_localconf machen, sonst wird es nicht laufen.
Ich versichere dir hilfsweise, dass der Code, so wie ich ihn gepostet habe, bei mir läuft.
Zeichen für Zeichen.
Schau, dass deiner *genau* so aussieht.

🙂

Unbekannter Benutzer ·

Und weiter geht's:

Problem:

Wenn ich eine Seite nehme (etwa kontakt/kontakt.html) und sie verschiebe unter die Seite impressum, dann müsste sie ja zu finden sein unter impressum/kontakt.html.

An dieser Stelle bekomme ich allerdings (manchmal) einen 404er Fehler.
Stattdessen ist die Seite (manchmal) noch unter kontakt/kontakt.html erreichbar. Manchmal geht aber auch das nicht.

Den Browsercache hab ich gelehrt, den FE-Cache in Typo3 auch.

Lösung:

Speaking-Url-Management-Cache beim Löschen des "normalen" Caches mitlöschen lassen.
Mittels folgender Zeile in der ext_localconf geht das:
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_pathcache'] = 'tx_realurl_pathcache';

Das löst das Problem insofern, als dass die Seiten jetzt alle unter ihrem richtigen (=aktuellen) Pfad und Namen gefunden werden.

(Für den Hinweis, das Problem in dieser Art zu lösen, danke ich Sebastian Fuchs.)

Es bleibt die Frage, wie clever es generell ist, diese Tabelle automatisch mitlöschen zu lassen.
Dadurch, dass sie auch alte Verweise enthält, werden Seiten ja auch an Orten gefunden, von denen ich sie eigentlich wegverschoben habe.
Ist das nicht für Google besser, als sie kommentarlos an der alten Stelle zu entfernen? (Oder schlechter, Stichwort duplicate content?)
Jedenfalls, dass es ohne die Tabelle zu leeren weder an der einen, noch an der anderen Stelle richtig funktioniert, ist schon nervig...

stephan_bauer ·

Hallo act,

ich habe es nur hiermit geschafft:

http://lists.netfielders.de/pipermail/typo3-at/2005-August/006746.html

Grüße

Stephan

actraiser schrieb

hallo, danke für die anleitung!

Kann man auch einen Ordner überspringen in der Anzeige?

Ich habe folgende Struktur

seiten (als Knoten quasi zur Strukturierung im Backend)
seiten/kontakt
seiten/impressum
seiten/feedback

Seit dem Update von RealURL 0.3.0 auf die aktuelle Version 1.1.4 rendert RealURL die Seiten folgendermassen:

http://www.website.de/seiten/kontakt.html

Mit RealURL 0.3.0 wird das gewünschte Ergebnis ausgebeben:

http://www.website.de/kontakt.html

Ich bin mir jetzt nicht sicher ob hier die Konfiguration das Problem ist oder ob RealURL 0.3.0 das Ganze einfach anders gehandhabt hat.

Grüße
-act

Gjergj ·

#angry# #angry# #angry# #angry# #angry# #angry# #angry# #angry# #angry# #angry# #angry# #angry#

...ich habe es geschaft der T_STRING-Fehler kommt nicht mehr, dafür aber jetzt

*****************************************************************************************************
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete
your request.
Please contact the server administrator, [no address given] and inform them of the
time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
*****************************************************************************************************

Gruß

Gjergj

Gjergj ·

HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!! 😢 HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!!

Unbekannter Benutzer ·

Tut mir leid, meine Wahrsagerkugel ist leider gerade nicht da.

Aber vielleicht könntest du wirklich (also mein ich jetzt echt!) (noch)mal überprüfen, ob du ALLES genau so gemacht hast, wie ich es hier beschrieben habe.

Bitte bei POST 1 anfangen!

Ich sag nur: In meiner ext_localconf fehlte keine Klammer... #angry#

Gjergj ·

Hallo Leute, also das ist meine .htaccess-datei!

RewriteEngine On
Options +FollowSymLinks

RewriteBase /

RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]

RewriteRule ^(typo3|banner|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule (\.html|/)$ index.php

RewriteRule .* index.php

PATH_thisScript: /kunden/kundenummer/FTP-Ordner/typo3/typo3/install/index.php

Der Fehler:
*****************************************************************************************************
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete
your request.
Please contact the server administrator, [no address given] and inform them of the
time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
*****************************************************************************************************

...also wenn ich diese funktionen ausschalte, kommt der fehler nicht mehr!!!
RewriteBase /
RewriteRule ^(typo3|banner|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]

es muss also am Pfad liegen!!

PATH_thisScript: /kunden/kundenummer/FTP-Ordner/typo3/typo3/install/index.php

..und glaubt mir ich habe schon so gut wie alle pfad-variationen ausprobiert!!

kann mir jemand helfen, bevor ich mir einen headshot gebe?