我正在更改文件结构。 以前在站点的根级别可用的一些URL现在被移动到子文件夹。
所以我有$uri
。
我try_files $uri @check_subfolder;
如果文件(普通.html文件)仍然存在于根级别,或者它的url写得正确,则try_files $uri
可以正常工作。
但是如果文件被移动到子文件夹,那么我输入
location @check_subfolder {
}
如果在这里我只是进行重定向rewrite ^(.*) $scheme://$host/articles$1 permanent;
那么一切都还是完美的。
但我想首先检查$uri
子文件夹中是否确实存在/articles
。
所以我做了
location @check_subfolder {
if (-f "/articles${uri}") {
rewrite ^(.*) $scheme://$host/articles$1 permanent;
}
}
它只是落到错误404.重定向不会发生。没有if
重定向工作。显然,问题在于我如何制定条件。
if (-f "/articles${uri}")
不起作用。
if (-f "/articles${request_filename}")
不起作用。
if (-f "/articles/${request_filename}")
不起作用。
if (-f /articles/$request_filename)
不起作用。
if (-f /articles/$uri)
不起作用。
我显然写了错误的连接。
答案 0 :(得分:1)
我的回答是我不认为-f
在文件系统中查找文件,而不是网页,所以我必须包含$document_root
。
所以现在它就像
location @check_subfolders {
if (-f $document_root/articles/$uri ) {
rewrite ^(.*) $scheme://$host:8090/articles$1 permanent;
}
}