2016-06-29 23 views
1

Ich Einrichtung Abfragestring Umleitung:Apache Query-String-Rewrite-Regeln

expo.com/en/general/campaigns/on-second-thought.html?slide=ost-2016-tank zu expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html

RewriteCond %{HTTP_HOST} ^(.*)expo\.com 
RewriteCond %{QUERY_STRING} slide=ost-2016-tank 
RewriteRule  ^/en/general/campaigns/on-second-thought.html?$  http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html [R=301,L,NC] 

Umleitung geschieht aber seine Anfügen slide = ost-2016-Tank wie unter

http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html?slide=ost-2016-tank 

slide=ost-2016-tank Parameter wird zur umgeleiteten Seite

hinzugefügt 10

Antwort

1

Da Ihre Regel keine neue Abfragezeichenfolge definiert, besteht das Standardverhalten von Apache darin, die alte Abfragezeichenfolge in die neue URL zu kopieren. Um es loszuwerden, fügen Sie eine ? an die angegebene Adresse umschreiben/Umleitung zu:

RewriteRule ^/en/general/campaigns/on-second-thought\.html?$ http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html? [R=301,L,NC] 

Oder für Apache> = 2.4, können Sie auch das Flag QSD verwenden (Query String Discard):

RewriteRule ^/en/general/campaigns/on-second-thought\.html?$ http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html [R=301,L,NC,QSD] 
+0

Thqs Julp, es funktioniert jetzt gut. –

1

einfach eine leere Abfrage-String hinzufügen, wenn Umleitung:

RewriteCond %{HTTP_HOST} ^(.*)expo\.com 
RewriteCond %{QUERY_STRING} ^slide=(ost-2016-tank)$ 
RewriteRule ^(/?en/general/campaigns/on-second-thought)\.(html)$ $1/%1.$2? [R=301,L,NC] 

Keine Notwendigkeit http://expo.com wieder zu erwähnen, wenn umgeleitet wird. Es wird aufgrund des Flags R automatisch zum selben Hostnamen umgeleitet. Es ist nicht nötig, dieselben Strings immer wieder zu wiederholen. Die Verwendung von Match-Gruppen und ihre spätere Referenzierung funktioniert.

Ihr Muster hatte .html?$ drin, was tatsächlich bedeutet, dass es .html sowie .htm entspricht. Sie erhalten keine Abfragezeichenfolgen in RewriteRule Kontext.