2009-03-01 7 views
1

Ich habe meine Web-App mit CakePHP umgeschrieben, aber jetzt muss ich meine alten formatierten URLs auf mein neues URL-Format umleiten lassen. Ich kann meine eigene Mod-Rewrite-Regel nicht hinzufügen. Ich habe es oberhalb der CakePhp Rewrite-Regel hinzugefügt, aber ich bekomme eine unendliche Redirect-Schleife. Ich will nur http://mysite.com/index.php?action=showstream&nickname=user auf http://mysite.com/user umleiten, bevor die CakePHP Neuschreiben geschieht.Wie schreibe ich eine benutzerdefinierte mod_rewrite .htaccess-Datei für CakePHP Routing?

EDIT: Ok, jetzt, wenn die Bedingung erfüllt ist, leitet es um, aber es fügt die ursprüngliche Abfragezeichenfolge an das Ende an. Ich gehe davon aus, dass wegen ist auf den QSA-Flag in CakePHP Regeln neu zu schreiben, aber ich habe den Eindruck, das „L“ in meiner Regel würde damit aufhören von der Ausführung ...

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^action\=showstream&nickname\=(.*)$ 
RewriteRule ^.*$ http://mysite.com/%1 [R=301,L] 

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

+0

Ich habe meinen ursprünglichen Beitrag aktualisiert. Jede Hilfe würde sehr geschätzt werden! – makeee

+0

Fügen Sie der Vertretung eine leere Abfrage hinzu, wie in meinem Beispiel gezeigt. – Gumbo

Antwort

1

Wenn Sie das tun Wenn Sie ein Capture innerhalb der RewriteCond-Zeile anstelle von RewriteRule vornehmen, müssen Sie das Capture mit% N anstelle von $ N referenzieren. Das heißt, sollte Ihre RewriteRule Linie sein:

RewriteRule ^index.php$ /%1 [R=301,L] 
1

Versuchen Sie, die Anforderungsleitung (THE_REQUEST) zu testen, um zu sehen, was URI wurde ursprünglich beantragt:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php 
RewriteCond %{QUERY_STRING} ^action=showstream&nickname=([^&]*)$ 
RewriteRule ^index\.php$ /%1? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?url=$0 [QSA,L] 

Aber vielleicht wäre es einfacher, dies zu tun mit PHP.