htaccess URL rewrite page.php? page = chaîne contenant un trait d’union

J’ai besoin d’une solution pour mon problème de redirection. Dans le fichier .htaccess , j’ai ce code:

 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 redirect vers category/pinturas .

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

De l’aide?

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

Étant donné que votre motif RewriteRule n’inclut pas le trait d’union ( - ), il correspond à tout, mais à l’exclusion du premier trait d’union.

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 tiret ( - ) doit être placé au début ou à la fin de la classe de caractères, car il s’agit d’un caractère spécial qui a un sens différent lorsqu’il est utilisé ailleurs.

Et cela fonctionne pour la requête comme category.php? Page = pinturas et redirect vers la catégorie / pinturas

Notez que cette réécriture 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 dans category.php?page=pinturas . (Il n’y a pas de redirection externe ici – qui pourrait être dans une autre partie de votre code?)