对于我们网站在 nginx 中的服务器块,我有以下位置指令:
location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$
location /applications/
location /
location ~ \.php$
我想要重定向旧论坛软件中的一个特定 URL。该 URL 如下所示:
https://www.example.com/forums/forumdisplay.php?f=105
到目前为止,我尝试过的任何内容似乎都无法与此 URL 匹配。我在 / 位置尝试了几个不同的重写语句,还尝试了精确匹配,认为最长的匹配应该获胜:
location = /forums/forumdisplay.php?f=105 {
return 301 https://newurl;
}
这不起作用 - 我仍然从该 URL 获得 404。我应该在哪里/如何进行此重定向?
答案1
一种方法是使用:
location = /forums/forumdisplay.php {
if ($arg_f = 105) {
return 301 https://newurl;
}
fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}
此方法将匹配查询参数设置为 105 的/forums/forumdisplay.php
URL f
,并且可以有其他查询参数。
注释中的示例需要与完整 URL 完全匹配,如果 URL 恰好是,则不起作用
http://example.com/forums/forumdisplay.php?f=105&fbclid=4567