2017-09-30 1 views
3

J'ai besoin d'une solution pour mon problème de redirection. Dans le fichier .htaccess J'ai ce code:htaccess URL réécriture page.php? Page = chaîne contenant un trait d'union

RewriteEngine On 
RewriteRule ^category/([a-zA-Z0-9]+) category.php?page=$1 [NC,L,QSA] 

Et cela fonctionne pour une requête comme category.php?page=pinturas et réoriente à category/pinturas.

Mais, si la chaîne a - comme ceci: category.php?page=aquoso-madeira redirige vers category/aquoso

Toute aide?

Répondre

2

category.php?page=aquoso-madeira Il redirigent vers category/aquoso

Parce que votre RewriteRulemodèle ne comprend pas le trait d'union (-), il correspond tout à, mais à l'exclusion, le premier tiret.

Inclure le trait d'union dans la classe de caractères:

RewriteRule ^category/([a-zA-Z0-9-]+) category.php?page=$1 [NC,L,QSA] 

Notez que le trait d'union (-) doit aller au début ou à la fin de la classe de caractère, car c'est un caractère spécial et a un sens alternatif en cas d'utilisation autre part.

Et ce travail pour la requête comme category.php? Page = Pinturas et redirect à la catégorie/Pinturas

Notez que cette récrire fait le contraire de ce que vous décrivez.

Cette règle prend une requête comme category/pinturas et la réécrit en interne à category.php?page=pinturas. (Il n'y a pas rediriger ici - qui pourrait être dans une autre partie de votre code?)