当我的所有其他 URL 重写工作完美时,为什么这不起作用:
rewrite "^/search/?\?q(.+)$" /search.php?q$1 break;
我确实重新启动了 nginx 和所有这些。
重写仅适用于 uri 路径。您不需要重写查询字符串部分,因为默认情况下它会自动附加到新的 url。
rewrite /search /search.php break;
例如,/search?q=something 将被写入 /search.php?q=something。
有关详细信息,请参阅http://wiki.nginx.org/HttpRewriteModule#rewrite 。下面的这一行解决了您的问题
同样 rewrite 仅对路径进行操作,而不对参数进行操作。