/
过去,一个项目正在从/subdir
. 由于旧的 URL 结构类似于/index.php?foo/123/bar
我使用以下重写来获取所有内容/forum
:
rewrite ^\/index\.php(.*)$ /forum/$1 last;
这种重写的问题是它还重定向/
到/forum/
和/index.php
到/forum/
. 现在我不想重定向它们,因为在/
.
所以/
不应该被重定向,但如果有一个查询字符串它应该。
我尝试了以下方法:
location / {
if ($query_string !~ "") {
rewrite ^\/index\.php(.*)$ /forum/$1 last;
}
try_files $uri $uri/ @rewrite;
}
开始页面现在可以工作,但如果有查询字符串,则不会重写任何内容,我不知道为什么。
沉寂了半天,我终于明白了。通过
$request_uri
在 location 块之外使用完整并调整正则表达式以使index.php
强制之后的任何字符都可以正常工作: