Je cherche à réécrire des URLs avec plusieurs sous-chaînes. Une sous-chaîne est demandée en tant que sous-répertoire, tandis que d'autres sont demandées en tant que paramètres de chaîne de requête normaux.Match Question Mark dans la règle mod_rewrite regex
Par exemple, je voudrais réécrire urls de
http://www.mysite.com/mark/friends?page=2
à
http://www.mysite.com/friends.php?user=mark&page=2
Je suis en mesure d'y arriver à l'exception du caractère de point d'interrogation. Voici ma règle de réécriture:
...
RewriteEngine On
RewriteBase/
RewriteRule ^([A-Za-z0-9-_]+)/friends[?]?([^/\.]+)?$ friends.php?user=$1&$2 [L]
Si je change le point d'interrogation en un autre caractère, cela fonctionne très bien. Il semble que le problème est que le '?' le caractère est interprété de manière incorrecte comme le début d'une nouvelle chaîne de requête.
Je dois transmettre tous les paramètres qui apparaissent après/user/friends tel quel. Comment puis-je accomplir cela?
Merci pour la réponse. Fonctionne très bien et je lis le livre de cuisine en ce moment. – markb
Supers solution cela a fonctionné pour moi aussi, bien que j'ai édité le code à mes conditions: RewriteRule^([A-Za-z0-9 -_] +) \. Php? pindex.php? typeofpage = $ 1 [QSA, L] –