Unterverzeichnis redirect 301 in Kombination mit RewriteCond

Ich versuche, einen ganzen Ordner (mit Hunderten von Seiten) in denselben Ordner in einer anderen Domäne umzuleiten. Die Site verwendet einen CMS, der rewritecond verwendet, um hübsche Seiten-URLs zu generieren:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Dies scheint mit meiner Weiterleitung zu kollidieren. Wenn ich redirect 301/folder/http: //www.site.invalid/folder/ verwende, werden die Seiten auf http: //www.site.invalid/folder/index.php? q = Ordner/Seitenname.html , die einen 404 zurückgibt.

Kann mir jemand in die richtige Richtung zeigen?

0
Hi Nrhaus, es gibt keine andere Rewritecondition. Die ursprüngliche Site hat nur die Umleitung, die Umleitungszielseite hat nur die Zeilen oben.
hinzugefügt der Autor bolvo, Quelle
Bitte geben Sie den anderen RewriteCond an, von dem Sie glauben, dass er kollidiert
hinzugefügt der Autor nrathaus, Quelle

2 Antworten

Behalte deinen gesamten .htaccess wie folgt:

RewriteEngine On

RewriteRule ^(folder/.*)$ http://www.site.invalid/$1 [R=301,NC,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?q=$1 [L,QSA]

Im Allgemeinen behalten Sie Ihre 301 Regeln vor anderen Catch-All-Regeln.

0
hinzugefügt
ok, um klar zu sein: site1 muss auf site2 umgeleitet werden. htaccess in site1 ist jetzt code RewriteEngine auf RewriteRule ^ (. *) $ site.invalid/ordner/index.php? q = $ 1 [L] code site2 hat code RewriteEngine auf RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule ^ (. +) $ index.php? q = $ 1 [L, QSA] code den obigen Code hinzuzufügen, tut nichts.
hinzugefügt der Autor bolvo, Quelle
um klar zu sein: Ich habe das http, es ist dieses Kommentar-System, das es aus meinem Kommentar herausschneidet.
hinzugefügt der Autor bolvo, Quelle
Welche URL hat nicht für dich funktioniert? Kannst du das in einem anderen Browser versuchen? Gibt es auch einen .htaccess in /folder/?
hinzugefügt der Autor anubhava, Quelle
Siehe meine Antwort oben. Sie müssen http:// in der Ziel-URL haben, aber Sie haben nur site.invalid/folder/index.php? Q = $ 1 [L]
hinzugefügt der Autor anubhava, Quelle
Es ist ziemlich schwierig, den .htaccess -Code aus den Kommentaren zu lesen. Können Sie beide .htaccess -Dateien von site1 und site2 veröffentlichen, indem Sie Ihre Frage bearbeiten.
hinzugefügt der Autor anubhava, Quelle

Anstatt eine 301 wie folgt zu verwenden:

redirect 301 /folder/ http://www.site.invalid/folder/

Versuchen Sie, ein 301 wie folgt zu verwenden und es vor dem anderen neu zu schreiben:

RewriteRule ^/folder/(.*)$ http://www.site.invalid/folder/$1 [R=301,L]

Was nun passiert, ist, dass diese Regel zuerst ausgeführt wird, die 301-Weiterleitung (weil sie ein R = 301-Flag hat), und da sie ein letztes Flag (L) hat, wird sie den Server daran hindern, weitere Schreibvorgänge danach zu verarbeiten .

Ihre htaccess-Datei würde also ungefähr so ​​aussehen:

RewriteEngine On

RewriteRule ^/folder/(.*)$ http://www.site.invalid/folder/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
0
hinzugefügt
Danke Nick, was ich bisher dank deines Posts habe, ist: code RewriteEngine auf RewriteRule ^ (. *) $ site.invalid/ordner/index.php? q = $ 1 [L] code Nun werden die Seiten auf Seite.invalid/Ordner/index.php? q = Seitenname die bereits zeigt die Seite an, aber verschönert die URL nicht. Ich bin nicht sicher, warum ich das rewriterule auf der neuen Website
hinzugefügt der Autor bolvo, Quelle
Die Umleitung geht nicht auf die hübsche URL, auch wenn ich das Rewrite vor Ort hinzufüge. Ich kann nicht verstehen, warum ... Ich bin schon froh, dass die Seiten angezeigt werden, aber aus SEO-Sicht wäre ich sehr viel glücklicher, wenn die hübsche URL angezeigt wurde. Warum funktioniert der exakt gleiche Code nicht für die Weiterleitung auf www.site3.tld zu www.site.invalid/ordner /? Die Seiten werden auf www.site.invalid/folderpageName.html umgeleitet (kein Schrägstrich nach dem Ordner).
hinzugefügt der Autor bolvo, Quelle
Lass mich wissen ob es funktioniert
hinzugefügt der Autor Nick, Quelle
Ihre Weiterleitung auf Website 1 sollte auf die hübsche URL umgeleitet werden. Dann sollten Sie eine neue Version auf Seite 2 haben, um diese URL zu lesen und sie an die richtige Seite zu senden. Referenz: mod_rewrite, URL-Rewriting und "hübsche Links" erklärt könnte eine Hilfe sein
hinzugefügt der Autor Nick, Quelle