2009-07-03 6 views
0

J'essaie d'écrire ce que je pensais être une règle assez simple mais soit je manque quelque chose douloureusement évident ou ce n'est pas une règle si simple. En fait, deux autres l'ont regardé et personne ne semble pouvoir dire ce que je fais de mal.Complètement perplexe avec .htaccess

Je viens de déplacer un site vers une nouvelle plateforme et j'ai besoin de configurer 301 redirections de pages dynamiques vers des URL spécifiques.

products.asp?dept=15 a besoin d'être redirigés vers http://www.example.com/products/collections/gourmet-side-dishes

Tous les exemples que j'ai trouvé le point moi à quelque chose qui ressemble à:

RewriteCond %{query_string} &dept=15 
RewriteRule ^/products\.asp$ http://www.example.com/products/collections/gourmet-side-dishes/? [R=301,L] 

Cependant, cela ne fonctionne pas. S'il vous plaît aider! Je dois arrêter ces pages d'aller à un 404.

Merci à l'avance, Seth

Répondre

0

Essayez une condition avec un chef de file esperluette, qui ne figure pas dans votre exemple d'URL, par exemple

RewriteCond %{query_string} dept=15 
RewriteRule ^/products\.asp$ http://www.somedomain.com/products/collections/gourmet-side-dishes [R=301,L] 
1

Vous devrez peut-être enlever la barre oblique de votre règle de réécriture:

RewriteRule ^/products.... 
# becomes 
RewriteRule ^products... 
0

avéré être une combinaison des deux conseils, en plus, je suis gêné de dire, l'ordre mes règles.

Règle finale qui a fonctionné pour moi:

RewriteCond %{query_string} dept=15 
RewriteRule ^products\.asp$ http://www.somedomain.com/products/collections/gourmet-side-dishes? [R=301,L] 
0

Si vous utilisez une règle dans un fichier .htaccess, le préfixe de chemin contextuel par répertoire est retiré de retour avant le test et a ajouté après l'application d'une règle .

RewriteCond %{query_string} &dept=15 
RewriteRule ^products\.asp$ http://www.example.com/products/collections/gourmet-side-dishes/? [R=301,L] 

Voir la par répertoire réécritures case dans la description de la RewriteRule directive pour plus d'informations.