2013-03-10 48 views
0

为什么在地球上这种不工作时,我的所有其他URL重写工作完美:Nginx的正则表达式URL重写不工作

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

我没有重启nginx的和所有的。

+0

您的网址如何排列?预期的结果是什么? – 2013-03-10 14:25:29

+0

我试图改变'搜索?q =任何'或'搜索/?q =无论'到'search.php?q =无论' – Alasdair 2013-03-10 14:30:34

+0

这应该工作。你有什么错误?另外,请用'\ 1'代替'$ 1'作为替换 – 2013-03-10 14:35:01

回答

2

重写仅适用于uri路径。您不需要重写查询字符串部分,因为默认情况下它会自动附加到新的url。

rewrite /search /search.php break; 

例如,/ search?q = something会写入/search.php?q=something。

查看http://wiki.nginx.org/HttpRewriteModule#rewrite了解更多详情。下面这行代表您的问题

此外,重写只能在路径上运行,而不是参数。