Zum Inhalt springen

realURL anpassen

Erstellt am 12. Juli 2010 · 11 Antworten · letzte Antwort am 13. Juli 2010

Tags: RealURL, Weiterleitungen & 404, Frage

TineBln ·

Hallo,

leider habe ich ein Problem mit dem Anpassen von realURL und hoffe, dass mir hier geholfen werden kann.

Grundsätzlich stellt die Extension meinen Inhalt momentan schon richtig dar (www.......de/unterseite1/ statt www.......de/index.php?id=1)
Nun habe ich aber das Problem, dass die Seite eine schon existierende, nicht in Typo3 erstellte Webseite ersetzen soll, und diese erwartet Parameter. Dies geschieht bisher auf diese Art und muss daher auch so übernommen werden, da frühere Besucher den Inhalt sonst nicht mehr richtig zu sehen bekommen würden:
www.......de/unterseite1/index.php?irgendwas=bla

Die Umstellung auf Typo3 soll jetzt daher auf die gleiche Art funktionieren können. Also wenn man noch index.php dahinter hängt soll es ebenfalls aufgerufen werden können und nicht den Fehler "File "index.php" was not found" produzieren. Daher dachte ich, dass ich das index.php an den neu erstellten Pfad per Konfiguration "heranhänge", scheitere jedoch leider daran. Könnt ihr mir einen Tipp geben?

LG Tine

Julian.​Hofmann ·

Hallo Tine.

Lassen sich denn die alten Parameter aus den neuen Seiten ersehen? D.h. könnte realurl diese in der Datenbank finden?

Falls es eine überschaubare Anzahl ist, wäre eine händische Lösung in der htaccess eine Option (die zugleich auch via Status 301 mitteilt, dass die alte URL veraltet ist):

RewriteCond %{QUERY_STRING} ^irgendwas=bla$
RewriteRule ^/index.php$ /alles-paletti/unterseite.html%1? [R=301,L]

Viele Grüße
Julian

TineBln ·

Hallo Julian,

danke für die Antwort!
Im Prinzip ist es nur 1 Parameter, der nicht im Typo3 irgendwo eingestellt ist. Es handelt sich dabei um eine Art ID/Timestamp der an ein Flash übergeben wird, damit dieses damit dynamischen Inhalt abfragen kann. Es ist auch möglich, dass diese nicht an die URL angehangen wird, dann wird ein anderer Inhalt dargestellt.

Der Parametername bleibt daher immer gleich, der Inhalt ist aber unterschiedlich. Könnte ich diesen trotzdem irgendwie in die Datenbank eintragen?

Zu deinem Beispiel: Dies müsste ich aber für jede Unterseite einstellen, oder?
Eigentlich soll es eine Lösung sein, die auch bei neu hinzukommenden Menüpunkten funktioniert, im Prinzip wäre es ok, wenn generell an alle Menüpunkte ein index.php dazukommt.

LG Tine

Julian.​Hofmann ·

Hab ich das jetzt richtig verstanden, dass
1. alte URLs weiterhin funktionieren sollen, die in der Art unterseite1/index.php?irgendwas=bla waren?
2. TYPO3-Seiten auch weiterhin in der URL einen Parameter für ein Flash haben sollen?
3. Nur ein Parameter nötig ist, der aber verschiedene, seitenabhängige Werte hat?

TineBln ·

zum Teil...
Also:
Der Parameterwert ist nicht seitenabhängig sondern eine Art Zeitstempel+ID der nur in manchen Fällen angehangen wird. Standardmäßig ist er erstmal nicht gesetzt..

Ich versuche es nochmal genauer zu erklären:
Bisher war es so, dass ein Seitenbesucher auf die Seite www.......de/unterseite1/ ODER www.......de/unterseite1/index.php OHNE Parameter ging und dort etwas in der dort angezeigen Flashdatei erstellen konnte. Seine "Kreation" konnte er dann an eine Emailadresse verschicken.
Damit dieser spezielle Inhalt "identifizierbar" und noch einmal darstellbar wird, wurde die "Kreation" in eine DB (nicht Typo3!) geschrieben.
In der Email bekam der Empfänger dann den Link mit der einmaligen Identifizierung an der URL www.......de/unterseite1/index.php?spezielleidentifizierungsnr=123455665 (die Nr. ist demnach immer unterschiedlich, Parametername gleich).
"Hintenrum" passierte dann bei Aufruf mit dem Parameter folgendes: Der Parameter wurde an das Flash weitergegeben und wenn vorhanden der entsprechende Inhalt dargestellt / aus der DB abgerufen.
Wenn man die Seite ohne Parameter aufrief, bekam man weiterhin die Standardanzeige.

Nun wird das Projekt doch etwas größer als gedacht (weitere Features, auch ohne Flash) und Typo3 kam ins Spiel. Damit die Emailempfänger nach der Umstellung trotzdem noch den Inhalt des an sie geschickten Links ansehen können, brauche ich die Möglichkeit den Link genauso aussehen zu lassen wie zuvor.

Ich hoffe es ist bis hierhin verständlich?

Ich glaube, dass der Parameter im realURL keine Rolle spielt, denn ich kann auch jetzt irgendwelche Parameter an die www.......de/unterseite1/ heranhängen und bekomme keinen Fehler. Sie haben ja nichts mit den Typo3-Einstellungen zu tun.
Im Prinzip bräuchte ich daher wohl nur die Möglichkeit, dass man an die "verformte" URL einfach noch nach dem letzten / ein "index.php" heranhängen KANN und dieses Ignoriert wird. Wenn ich dann "händisch" noch irgendwas dazuschreibe (www.......de/unterseite1/?irgendwas=blablub) dürfte es Typo3 soweit ich es verstehe egal sein? Zumindest produziert er bei mir hier keinen Fehler und ignoriert den Parameter wie gewünscht.
Auslesen kann ich den Parameter trotzdem beim Einbinden meiner Flashdatei über Typoscript, das habe ich schon ausprobiert. Daher benötige ich wohl wirklich nur die Möglichkeit jeden Link meiner Seite auch mit einem zusätzlich an die URL angehangenen index.php aufzurufen ohne eine Fehlermeldung zu bekommen.
Puh... ich hoffe ich habe nun nicht noch mehr Verwirrung gestiftet...

Nochmal kurz zu deinen Punkten:
zu 1.: Ja, siehe oben, Parameter optional, es fehlt zur Zeit nur ein index.php hinter der gesamten URL an das die Parameter gehängt werden
zu 2.: Optional und nicht auf allen Typo3-Seiten, nur bei denen es notwendig ist / Wenn anderer Flashinhalt dargestellt werden soll
zu 3.: nicht seitenabhängig, sondern der Parameter kann irgendetwas sein / nicht Typo3 abhängig

Vielen Dank!!

Julian.​Hofmann ·

Ok, denke, jetzt tiefer drin zu sein, um eine mögliche Lösung zu finden.

Neu von Flash erzeugte "Kreations"-Links
Wenn diese die Form ohne index.php haben dürfen (www.......de/unterseite1/?irgendwas=blablub), dann sollte sich das aus Flash heraus ja so bastel lassen (oder wo werden die Links generiert?)

URL-Interpretation/realURL
Über defaultToHTMLsuffixOnPrev=false ließe sich verhindern, dass aus "Unterseite 1" in der URL unterseite-1.html wird. Kombiniert mit appendMissingSlash lässt sich am Ende ein Slash erzwingen.
Damit sollte dann ein neu erstellter (bzw. auch alter) Link der Form www.......de/unterseite1/?irgendwas=blablub funktionieren.
Mit einem Rewrite - leider für jede einzelne Seite - würde sich das frühere 'index.php' beseitigen lassen. Ungetestet als Ansatz:

RewriteCond %{REQUEST_URI} ^unterseite-1/index.php$
RewriteCond %{QUERY_STRING} ^irgendwas=[^&=]$
RewriteRule ^/index.php$ /unterseite-1/%1? [R=301,L]
TineBln ·
Julian.Hofmann schrieb

Neu von Flash erzeugte "Kreations"-Links
Wenn diese die Form ohne index.php haben dürfen (www.......de/unterseite1/?irgendwas=blablub), dann sollte sich das aus Flash heraus ja so bastel lassen (oder wo werden die Links generiert?)

Dies funktioniert ja leider nicht, da die bisherigen Links in den Mails das index.php enthielten. Somit würden sie dann weiterhin ins leere laufen o.O
Die neuen Links derart zu ändern würde funktionieren (wobei ich dann wohl auch einen ganz anderen Weg wählen könnte), aber nachwievor sind die bestehenden Verlinkungen das Problem.
Wenn ich www.......de/unterseite1/?irgendwas=blablub nehmen könnte würde es ja auch mit der Standardkonfiguration von realURL funktionieren ohne etwas umzustellen oder verstehe ich dich jetzt falsch? Denn diese erstellt mir ja schon standardmäßig absolut richtig die URLs in Form von www.......de/unterseite1/ ohne, dass ich etwas umstellen muss.
Nur ein index.php kann ich dann nicht mehr anhängen und benötige es als "mögliche Option ohne Fehlermeldung" 😢

Für den Aufruf ohne Parameter würde es mit den realURLs auch jetzt schon gehen. Es muss nur noch die Möglichkeit geben auch ein index.php daran zu hängen und zu der gleichen Seite wie ohne das index.php zu gelangen. Vielleicht wäre das auch ein Ansatz der funktioniert?
www.......de/unterseite1/ ist das gleiche wie www.......de/unterseite1/index.php und beides muss möglich sein.

Julian.​Hofmann ·

Ja, das wäre (zumindest vom Ansatz her) der zweite Abschnitt. Dass einerseits die neuen URLs so erzeugtw erden, dass sie zu den alten passen, andererseits per Rewrite schon bevor realURL greift oder TYPO3 irgendetwas ausliest, die URL neugeschrieben/redirected wird auf die neue Form (damit aber alte Links weiterhin funktionieren).

TineBln ·

Achso, ich hatte

Julian.Hofmann schrieb
RewriteCond %{REQUEST_URI} ^unterseite-1/index.php$
RewriteCond %{QUERY_STRING} ^irgendwas=[^&=]$
RewriteRule ^/index.php$ /unterseite-1/%1? [R=301,L]

so interpretiert, dass es dann nur noch wie www.......de/unterseite1/?irgendwas=blablu funktioniert #paralyzed#
Wenn eine neue Seite dazukommt muss diese dann aber IMMER händisch in der htaccess geändert werden? Oder gibt es keinen generellen Ansatz, dass index.php an der URL erlaubt ist und ignoriert wird? Ich hätte nicht gedacht, dass dies sooo kompliziert ist 😢

Julian.​Hofmann ·
TineBln schrieb

Wenn eine neue Seite dazu kommt muss diese dann aber IMMER händisch in der htaccess geändert werden?

Ja. Außer, Du kannst die Adressen anhand eines Regulären Ausdrucks eindeutig festlegen (z.B. durchnummerierte Seiten oder alles, was mit "unterseite" beginnt odgl.).
Mit Rewrites kann man da viiiiel Baseln und Tricksen (Weshalb es auch nicht ganz so einfach, kurz udn eindeutig zu lösen ist).

TineBln schrieb

Oder gibt es keinen generellen Ansatz, dass index.php an der URL erlaubt ist und ignoriert wird?

Dafür installierst Du ja eigentlich realURL, dass das nicht mehr da ist. Es gibt in realurl eine Möglichkeit, filenames in Parameter zu überführen (z.B. print.html => &type=98-). Bei index.php dürfte das aber nicht klappen, da ja tatsächlich die www.example.org/index.php immer aufgerufen wird.

Eine Überlegung ist noch, ob zu per RewriteCond ein "index.php?irgendwas=" abfangen kannst.

TineBln ·

Mittlerweile hatt eich auch schon einen Umweg über weitere Extensions wie Realurlconf + aoe_realurlpath (hätte glaube ich auch nur mit Realurlconf funktioniert) versucht durch die ich es zumindest hinbekommen habe, dass man "bequem" in der Listenansicht die neuen Namen angeben kann. Beispiel: statt www......de/impressum.html konnte ich dort www......de/impressum/index.html UND www......de/impressum/ einstellen. Biede würden zu der gleichen Seite führen was ja gewollt ist 🙂
Leider hat mein wisssen aber wieder nicht ausgereicht um das html in php zu ändern, ansonsten wäre das eine super Lösung gewesen.

Diese filenames habe ich auch gesehen, blöd nur, wenn die ebenfalls mit index.php nicht funktionieren... es ist zum verrückt werden! :o

Das mit dem RewriteCond wäre vielleicht eine Möglichkeit, denn der Parametername wäre ja immer gleich. Das würde ja auch wieder in die htaccess-Datei integriert werden, oder (sorry für die dummen Fragen, bin ja noch absoluter Typo3-Anfänger)?

Julian.​Hofmann ·
TineBln schrieb

Das mit dem RewriteCond wäre vielleicht eine Möglichkeit, denn der Parametername wäre ja immer gleich. Das würde ja auch wieder in die htaccess-Datei integriert werden, oder

Genau. Das hat eigentlich nichts direkt mit TYPO3 zu tun, sondern mit dem Webserver (Apache), der die htaccess auswertet.

Via Suchmaschine sollte sich da genug finden.
Die ausführliche, sehr technische (und IMHO abschreckende) Dokumentation ist unter
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

TineBln schrieb

(sorry für die dummen Fragen, bin ja noch absoluter Typo3-Anfänger)?

Dumme Fragen gibt normal nicht - nur dumme Antworten. Denke, jeder hat irgendwann angefangen und war froh, dass Leute da waren, die einem das ein oder andere erklärt haben.