【发布时间】:2016-06-29 02:45:38
【问题描述】:
我的 /etc/nginx/sites-available/default 页面中有这行代码:
rewrite ^/(.*)/(.*) /search.php?name=$1&last=$2
它完成了我想要的:更简洁的链接网址
example.com/john/smith 已正确转发到 PHP GET。
但是,它也破坏了我所有的样式和图片链接。
所以我希望仅当第一个单词既不是 css 也不是图像时才进行重写。
但我只能找到 url 中 GET 参数的 if 语句,而不是 url 中的directoies,如下所示:
if ($args ~* "/?param1=val1¶m2=val2&") {
rewrite ^ http://www.example.com/newparam/$arg_param1/$arg_param2? last;
}
【问题讨论】:
-
我认为更好的解决方案可能是仅在请求的文件名不存在时才应用重写。 Take a look at this question.
-
@AustinBrunkhorst 我愿意使用该解决方案,但它似乎适用于 apache,我的问题是语法正确。我会寻找这样的 nginx 解决方案