[gelöst] .htaccess redirect auf Multisite
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 06.04.2011 - 18:27 Uhr in
Hallo,
trotz Recherche im Internet bin ich bei folgender Aufgabe etwas verzweifelt und würde mich über Hilfe freuen:
Nach einer kompletten Site-Überarbeitung möchte ich, dass einige alte Pfade mit redirect permanent auf neue umgeleitet werden (ich weiß, sollte man normalerweise vermeiden).
Hier das Beispiel, wie ich mir das als absoluter Apache-Amateur naiv vorgestellt habe:
1.) .htaccess in dem Ordner sites/www.meine-site.de erstellt
2.) dort Redirect permanent /bauanleitung-holzwaage http://www.meine-site.de/bauanleitung/holzwaage
eingetragen
Das funktioniert jedoch nicht.
Kann mir bitte jemand dabei helfen, die Aufgabe zu lösen. Bitte dabei darauf Rücksicht nehmen, dass ich im Prinzip keine Ahnung von der .htaccess und Apache-Befehlen habe.
Vielen Dank im Voraus.
Jörg
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du schon einmal in die
am 06.04.2011 - 21:02 Uhr
Hast du schon einmal in die Log-Dateien deines Server geschaut ?
Funktioniert das Rewriting von URLs auf deinem Server ?
Wo hast du das Redirect in die htaccess eingebaut ?
Eine kurze Anleitung / Erklärung zu Redirect gibt es bspw. hier: http://www.drweb.de/magazin/weiterleitungen-mit-htaccess/
SteffenR
Hallo SteffenR, in der
am 07.04.2011 - 06:43 Uhr
Hallo SteffenR,
in der Log-Datei habe ich nichts bezüglich .htaccess gefunden.
Den Redirect habe ich als einzigeste Direktive in der .htaccess.
Ich vermute, der Ort der Datei in /sites/.... ist wohl falsch. Es gibt eine .htaccess im Wurzelverzeichnis, die auch schon relativ viel enthält, d.h. wohl von Drupal so angelegt wurde. Wenn ich dort den Redirect einbauen würde, wie unterscheidet dann aber der Server für welche Site es gilt?
Gruß .... Jörg
Hallo nochmal, habe den
am 07.04.2011 - 06:55 Uhr
Hallo nochmal,
habe den Redirect nun ganz unten an die htaccess im Wurzelverzeichnis angehängt. Jetzt funktioniert der Redirect, jedoch für alle Sites. Wie kann ich in der htaccess einen Filter oder eine so etwas wie eine If-Anweisung für die Sites einbauen? Dann sollte es ja gehen.
Gruß ... Jörg
Jorge schriebHallo
am 07.04.2011 - 07:28 Uhr
Hallo nochmal,
habe den Redirect nun ganz unten an die htaccess im Wurzelverzeichnis angehängt. Jetzt funktioniert der Redirect, jedoch für alle Sites. Wie kann ich in der htaccess einen Filter oder eine so etwas wie eine If-Anweisung für die Sites einbauen? Dann sollte es ja gehen.
Gruß ... Jörg
Die htaccess im Root ist natürlich für alle Seiten zuständig - du kannst statt dem Pfad /meinpfad auch die komplette URL angeben - das sollte auch funktionieren..
Redirect http://www.domain.com/meinpfad http://www.domain.com/meinneuerpfad
Falls dies nicht funktioniert kannst du dies auch über mod_rewrite selbst lösen. Da hast du dann wesentlich mehr Möglichkeiten..
Ist hier ganz gut beschrieben: http://www.websmith.de/blog/webprogrammierung/redirect-suchmaschinen/red...
Update
Durch Zufall bin ich gerade noch auf einen aktuellen Post im Drupalcenter gestoßen - ähnliches Problem..
Lösung: http://drupal.org/project/path_redirect - solltest du auf jeden Fall mal ausprobieren ...
SteffenR
Der Redirect mit kompletter
am 07.04.2011 - 07:28 Uhr
Der Redirect mit kompletter URL funktioniert leider nicht.
Werde mal Deine mod_rewrite Idee nachlesen. Das erscheint mir jedoch auf den ersten Blick recht kompliziert.
Gibt es nicht vielleicht doch noch ein einfache Lösung?
Jörg
Auf der empfohlenen Seite
am 07.04.2011 - 07:41 Uhr
Auf der empfohlenen Seite habe ich folgendes für den Rewrite mit/ohne www gefunden:
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Im Prinzip müßte ich das nun so umbauen das aus
http://www.meine-site.de/bauanleitung-holzwaage
dann
http://www.meine-site.de/bauanleitung/holzwaage
wird.
Wie mache ich denn das? Ich weiß leider nicht wo ich hingreifen muß, da mir die ganzen ^ % * $ Dinger ein Rätsel sind. Kann mir jemand mein Beispiel lösen, dann sollte ich es auf alle URLs übertragen.
Vielen Dank im Voraus .... Jörg
Anbei ein Beispiel - gerade
am 07.04.2011 - 08:01 Uhr
Anbei ein Beispiel - gerade selbst auf einer Multisite getestet:
RewriteCond %{HTTP_HOST} ^dev.port11.de$ [NC]
RewriteRule ^meineurl$ http://www.spiegel.de [R=301,L]
Du fragst im ersten Schritt - also der Rewrite Condition die URL ab - in der nächsten Zeile leitest du die Anfragen weiter - hier müsstest du dann deine Umleitungen eintragen. Diese gelten dann nur für die definierte Condition - in diesem Falle für die URL dev.port11.de.
Den oben aufgeführten Code solltest du vor die Drupal eigenen Rewrite Rules schreiben - diese lauten wie folgt:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
SteffenR
Hallo SteffenR, vielen
am 07.04.2011 - 12:10 Uhr
Hallo SteffenR,
vielen Dank.
habe jetzt Folgendes und auch ein paar andere Varianten probiert:
RewriteCond %{HTTP_HOST} ^meine-site.de$ [NC]
RewriteRule ^meine-site.de/bauanleitung-holzwaage$ http://www.meine-site.de/Bauanleitung/Holzwaage [R=301,L]
oder
RewriteCond %{HTTP_HOST} ^meine-site.de$ [NC]
RewriteRule ^/bauanleitung-holzwaage$ http://www.meine-site.de/Bauanleitung/Holzwaage [R=301,L]
Es funktioniert einfach nicht. Da ich noch etwas im Blindflug unterwegs bin, bleibe ich bestimmt an einer Kleinigkeit hängen, die ich nicht sehe. Die Grundidee Bedingung und dann die Anweisung ist im Prinzip klar. %{HTTP_HOST} ist eine Servervariabel, [NC] heißt Case-Insensitiv, R=301 heißt permanent, OK. Nur was bedeut ^ und $ ? Muß ich da was beachten? Und in welchem Format wird in Deinem Beispiel meineurl erwartet?
Gruß und Dank ... Jörg
Einen Schritt bin ich nun
am 07.04.2011 - 12:28 Uhr
Einen Schritt bin ich nun weiter.
RewriteCond %{HTTP_HOST} ^www.meine-site.de$ [NC]
RewriteRule ^bauanleitung-holzwaage$ http://www.meine-site.de/Bauanleitung/Holzwaage [R=301,L]
funktioniert nun, jedoch nur für die URL mit www vorne weg. Mit dem "Holzhammer" habe ich dann
RewriteCond %{HTTP_HOST} ^meine-site.de$ [NC]
RewriteRule ^bauanleitung-holzwaage$ http://meine-site.de/Bauanleitung/Holzwaage [R=301,L]
noch eingefügt und erwartungsgemäß geht es dann auch für die URL ohne www. Das kann man doch auch bestimmt in einem Schritt machen, oder? Die Frage nach den ^ und $ bleibt natürlich.
... Jörg
Eigentlich müsste die letzte
am 07.04.2011 - 19:35 Uhr
Eigentlich müsste die letzte RewriteCondition dir beide URLs - also mit und ohne www - korrekt umleiten. Müsstest du mal testen.
SteffenR
Hallo SteffenR,habe noch
am 09.04.2011 - 15:09 Uhr
Hallo SteffenR,
habe noch etwas hin und her probiert. Ich scheine wohl beide Anweisungen zu brauchen. Interessanterweise habe ich dabei festgestellt, dass wenn ich mich unter
www.meine-site.de
anmelde und auf die URL ohne www wechsle nicht mehr eingeloggt bin. Lasse deshalb beide Anweisungen drin und bin froh, dass es geht.Hat noch jemand eine Info zu den ^ und $ Zeichen in der htaccess. Das Thema ist quasi unmöglich zu googln. Würde mich freuen, zu erfahren, was die bedeuten. Sind es ggf. Wildcards?
Gruß und Danke ... Jörg