Frage

Ich muss haben:

http://www.example.com/v1/my-project/ umgeleitet http://example.com/my-project/

so:

(1) entfernen Sie die www vom http_host

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

(2) Die 'v1 /' Teil des REQUEST_URI

RewriteCond %{REQUEST_URI} ^/v1/(.*)$ [NC]
RewriteRule . %1 [R=301,L]

(3) Ich möchte auch alle 404 auf der Homepage umgeleitet werden.

ErrorDocument 404 /

(4) Schließlich sind alle meine Dokumente liegen tatsächlich in einem "v2 /" Ordner, der die aktuelle aktive Website hostet, aber ich will nicht "v2" in der URL, nur "/"

RewriteCond %{REQUEST_URI} !^/v2/ [NC]
RewriteRule ^(.*)$ /v2/$1 [NC,L]

So, hier sind meine Regeln. Meine Frage ist: Ich habe es nicht geschafft, (2): es wird umgeleitet zu / (wegen der Regel (3) Ich denke, ich denke, dass die Reihenfolge meiner Regeln fehlerhaft sein muss, aber ich kann nicht scheinen, um es richtig zu bekommen.. Sie helfen?

War es hilfreich?

Lösung

„Regel 3“ ist keine Regel überhaupt, und seine Ordnung in Bezug auf Ihre RewriteRules keine Rolle spielt. Regel 2 ist aus einem anderen Grund fehlschlägt. Ich bin mir nicht sicher, ob es Ihr Problem zu lösen, aber ich würde Ihre Regeln etwas vereinfachen, indem sie wie folgt zu schreiben:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]

RewriteRule ^v1/(.*) /$1 [R=301,L,NC]

RewriteCond %{REQUEST_URI} !^/v2/ [NC]
RewriteRule (.*) /v2/$1 [NC,L]

Andere Tipps

Sie sollten zunächst eine Regel schreiben, die eine externe Umleitung (R Flag) und dann die anderen Regeln verursacht. Andernfalls wird eine bereits neu geschrieben URL kann für eine externe Weiterleitung verwendet werden, obwohl es nur für eine interne Umleitung vorgesehen war.

Also ich werde nicht die Reihenfolge Sie gerade jetzt ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top