在nginx中查找子文件夹中的文件

时间:2013-01-07 10:21:34

标签: nginx rewrite

我正在更改文件结构。 以前在站点的根级别可用的一些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)不起作用。

我显然写了错误的连接。

1 个答案:

答案 0 :(得分:1)

我的回答是我不认为-f在文件系统中查找文件,而不是网页,所以我必须包含$document_root。 所以现在它就像

一样
location @check_subfolders {
    if (-f $document_root/articles/$uri ) {
        rewrite ^(.*) $scheme://$host:8090/articles$1 permanent;
    }
}