2013-03-10 3 views
0

Pourquoi diable ne fonctionne pas lorsque cela tous mes autres réécritures d'URL fonctionnent parfaitement:Nginx Regex Réécriture d'URL ne fonctionne pas

rewrite "^/search/?\?q(.+)$" /search.php?q$1 break; 

Je l'ai fait redémarrer nginx et tout cela.

+0

Comment vos URLs semblent-ils alignés? Quel est le résultat attendu? –

+0

J'essaie de changer 'search? Q = whatever' OU' search /? Q = whatever' à 'search.php? Q = quelquechose' – Alasdair

+0

cela devrait fonctionner. Quelle est votre erreur? aussi, essayez avec '\ 1' au lieu de' $ 1' en remplacement –

Répondre

2

La réécriture ne fonctionne que sur le chemin de l'uri. Vous n'avez pas besoin de réécrire la partie de la chaîne de requête, car elle est automatiquement attachée à la nouvelle URL par défaut.

rewrite /search /search.php break; 

Par exemple,/search? Q = quelque chose sera écrit à /search.php?q=something.

Voir http://wiki.nginx.org/HttpRewriteModule#rewrite pour plus de détails. Cette ligne ci-dessous répond à votre question

De plus, la réécriture fonctionne seulement sur le chemin, pas sur les paramètres.