Zur Navigation

301 Umleitung von alten dynamischen URLs zu neuen statischen URLs

Frage nach dem korrekten Aufbau meiner .htaccess

1 Siegfried (Gast)

Hallo Jörg, vielen Dank für Deinen Beitrag Nr 39 im Thread Weiterleiten einer URL abhängig vom Query String

Ich erstelle hier ein neues Thema, da meine weiteren Fragen nichts mehr speziell mit Query Strings zu tun haben, sondern mit Fragen zum korrekten Gesamtaufbau meiner .htaccess. Deine helfende Antwort vom o.g. thread lasse ich hier natürlich einfliessen. Ich hoffe, Du kannst mir nochmal weiterhelfen.

Wenn ich also folgende Ausgangssituation habe:

0. Die betreffende Website zieht zu einem neuen Provider um und deren URLs ändern sich von einem alten dynamischen Format zu einem neuen statischen Format, wobei die Domain (hier anonymisiert mit "http://www.domain.tld" bezeichnet) gleich bleibt. Jede einzelne alte URL soll auf die entsprechende neue URL per 301 umgeleitet werden.

1. Die weiterzuleitende alte URL der Startseite ist so aufgebaut:
http://www.domain.tld/content/index.php

2. die weiterzuleitenden alten URLs der restlichen 16 Seiten sind so aufgebaut (wobei die Parameter des Querystrings eine konkrete Unterseite definieren):
http://www.domain.tld/content/index.php?option=com_content&task=view&id=7&Itemid=15

3. die neue URL der Startseite lautet:
http://www.domain.tld

4. die neuen URLs der restlichen 16 Seiten lauten:
http://www.domain.tld/seitenname.html

wobei gilt, dass es natürlich pro Seite einen jeweils eigenen seitennamen gibt und dass alle html-Dateien direkt unterhalb des document-roots liegen. => keine hierarchischen URLs.

5. Die Website liegt nach dem Umzug in einem Unterverzeichnis /live/. Dieses Unterverzeichnis soll zugleich als neuer document root festgelegt werden, sodass gilt http://www.domain.tld/ zeigt auf den physikalischen Pfad /live/index.html, bzw. http://www.domain.tld/seitenname.html zeigt auf /live/seitenname.html.

Würde meine .htaccess dann so korrekt sein, wie folgt?

#1. Setzen des neuen DocumentRoots

DocumentRoot /live

#2. Umleiten der Startseite

redirect 301 /content/index.php http://www.domain.tld/

#3. Umleiten der restlichen 16 Seiten

RewriteEngine On
RewriteBase /content/
RewriteCond %{QUERY_STRING} option=com_content&task=view id=7&Itemid=15
RewriteRule index\.php http://www.domain.tld/seitenname.html? [L,R=301]


# für jede weitere Unterseite die letzten 2 Zeilen aus dem vorgenannten Block wiederholen (also nur RewriteCond und RewriteRule)

Fragen dazu:

zu #1:

Der default document root des neuen Providers ist auf das physikalische Verzeichnis public_html gemapt. Muss ich dann in der documentRoot Direktive public_hrml noch voranstellen, oder passt meine Syntax so wie oben angegeben? (-> Shared Hosting Paket, kein Root Zugriff, keine Einsicht in höhere Verzeichnisebenen als /public_html).

zu #2 und #3:

Kommt #2 nicht #3 in die Quere, da alle URLs unter #3 ja um Querystrings ergänzte Startseiten-URLs sind? Wenn ja, was müsste ich ändern?

zu #3:
Muss ich in der RewriteRule sämtliche Punkte maskieren, oder ist es so korrekt, wie ich es angegeben habe?

Habe ich in meiner .htaccess im Hinblick auf meine eingangs genannten Anforderungen noch etwas vergessen?

Ich bedanke mich nochmals und viele Grüße

P.S.:Kann man Dir auch eine Spende zukommen lassen?

10.03.2011 09:39

2 Jörg

5. Die Website liegt nach dem Umzug in einem Unterverzeichnis /live/. Dieses Unterverzeichnis soll zugleich als neuer document root festgelegt werden, sodass gilt http://www.domain.tld/ zeigt auf den physikalischen Pfad /live/index.html, bzw. http://www.domain.tld/seitenname.html zeigt auf /live/seitenname.html.

Würde meine .htaccess dann so korrekt sein, wie folgt?
#1. Setzen des neuen DocumentRoots

DocumentRoot /live

Eine DocumentRoot Direktive in einer htaccess Datei wird vom Server nicht berücksichtigt. Diese wird in der VirtualHost-Konfiguration definiert - siehe auch unter "Kontext" in der Dokumention zu DocumentRoot. Wenn du einen gewöhnlichen Webspace hast, kannst du den DocumentRoot möglicherweise in einem Adminpanel deines Accounts einstellen.

zu #2 und #3:

Kommt #2 nicht #3 in die Quere, da alle URLs unter #3 ja um Querystrings ergänzte Startseiten-URLs sind? Wenn ja, was müsste ich ändern?

Ja, #2 könnte hier ja ale URLs weiterleiten. Ich würde hier einfach wie in den anderen Fällen verfahren, d.h. in diesem Fall den leeren Query String als Bedingung nutzen

RewriteCond %{QUERY_STRING} ^$
RewriteRule index\.php http://www.domain.tld/ [L,R=301]

zu #3:
Muss ich in der RewriteRule sämtliche Punkte maskieren, oder ist es so korrekt, wie ich es angegeben habe?

Nur das Muster (hier index.php) muss maskiert werden, nicht das Weiterleitungsziel

P.S.:Kann man Dir auch eine Spende zukommen lassen?

Du kannst, wenn du möchtest, die Weiterentwicklung meiner Forensoftware unterstützen - auf dieser Seite findet sich auch ein Spendenlink

10.03.2011 16:54 | geändert: 10.03.2011 16:55

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]