2016-06-09 2 views
1

Meine Website in Konflikt verwendet RewriteEngine Variablen in der URI zu verbergen, wie folgt:301-Weiterleitung & htaccess RewriteEngine

RewriteRule ^([^/\.]+)/?/([^/\.]+)/?$ page.php?theme=$1&pg=$2 [L] 

Dies funktioniert gut, aber wie wir Neubelebung, haben wir ein paar 301 umleitet bekam zu handhaben auch. Ich habe diese unter meine Rewrite-Regeln hinzugefügt, hier ein Beispiel:

redirect 301 /about/about-the-site https://www.mywebsite.com/about-us 

Das Problem ist, dass es Umleiten aber das Hinzufügen zusätzlicher Mist auf die URL string:

https://www.mywebsite.com/?theme=about&pg=about-the-site 

Jede Idee, warum dies wäre Ereignis?

Antwort

1

Nicht mischen mod_alias und mod_rewrite Regeln wie diese 2 Module in verschiedenen Phasen ausführen. Halten Sie alles in mod_rewrite selbst:

RewriteEngine On 

RewriteRule ^about/about-the-site/?$ https://www.mywebsite.com/about-us? [L,NC,R=301] 
RewriteRule ^([^/.]+)/?/([^/.]+)/?$ page.php?theme=$1&pg=$2 [L,QSA] 

Beachten Sie auch zusätzliche ? in der Ziel-URL vorbestandene Query-String-Streifen. Stellen Sie sicher, dass der Browser während des Testens gelöscht wird.

+1

Vielen Dank !! Ich wusste nicht, dass es einen Unterschied zwischen mod_alias und mod_rewrite gibt. Als Nebenbemerkung habe ich '$' am Ende der URL hinzugefügt, so dass es nicht gierig war: 'RewriteRule^über/über-die-Site $ https://www.mywebsite.com/about-us? [L, NC, R = 301] ' – TH1981