2011-04-04 3 views
0

je ne peux pas comprendre pourquoi cela ne fonctionne pas. Peut-être que quelqu'un peut me l'expliquer.RewriteRule ne correspond pas comme prévu (par moi)

Je donne les résultats suivants:

http://www.mydomain.de/my-apache-tag.html 

qui devrait réécrire à

http://www.mydomain.de/tag/my-apache 

Dans mon .htaccess j'ENABLED cette règle:

RewriteRule ^/(.*)-tag\.html$ /tag/$1 

Dans mon tout accord entre/et avant -tag.html doit être considéré comme l'argument 1.

Mais ce qui précède mènera à un 404. J'ai même mis le domaine devant/tag/$ 1 mais cela ne fonctionne pas aussi.

Toute aide est appréciée, merci beaucoup.

Christian

+0

Essayez de supprimer le "/" au début de la partie "match" de la règle. –

Répondre

0

Selon la version apache, le slash n'est pas nécessaire. (Vous pouvez placer /? Si vous voulez être capable de faire correspondre les deux cas) voir @Jeff Parker commentaire.

De même, si vous souhaitez que l'URL s'affiche sous la forme http://www.mydomain.de/tag/my-apache dans le navigateur en tapant http://www.mydomain.de/my-apache-tag.html, vous devez ajouter l'indicateur [R] à rediriger.

Et bien sûr, votre fichier sur le serveur doit être le nom my-apache dans le répertoire tag/. Ou vous aurez une erreur 404.

Si vous voulez que le client de type http://www.mydomain.de/tag/my-apache et être servi http://www.mydomain.de/my-apache-tag.html votre règle est fausse et devrait être:

RewriteRule ^tag/(.*)$ /$1-tag.html 

Si vous voulez combiner le comportement, faites attention aux boucles.

Questions connexes