2013-05-31 3 views
2

Je suis nouveau sur Apache. Je suis en train de faire un 301 permanent redirigent à l'adresse suivante via apache mod_rewrite:Apache Mod_rewrite 301 redirection

http://www.mysite.com/products.php?page=TheForm

à

http://www.mysite.com/the-form/

Le problème est que nous avons une chaîne de requête dans la première URL. Comment puis-je faire face à cette situation comme normalement j'ai utilisé le code suivant mais la chaîne de requête ne peut pas être passée à la RewriteRule.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L] 

    RewriteRule ^products.php?page=TheForm$ http://www.mysite.com/the-form [R=301,L] 
</IfModule> 

Répondre

2

Le chemin URI testé dans la règle de réécriture ne contient pas la requête. La variable QUERY_STRING doit être utilisée.

Vous pouvez essayer ceci:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} page=TheForm [NC] 
RewriteRule ^products\.php /the-form/? [R=301,NC,L] 
+0

vous remercie de votre réponse, je viens d'essayer votre code mais il ne fonctionne pas :( – Mark

+0

S'il vous plaît assurez-vous est effacé le cache du navigateur, il devrait fonctionner Quel genre. –

+0

Génial! merci beaucoup faa cela a fonctionné après avoir effacé le cache – Mark