0

我正在更改文件结构。以前在站点的根级别可用的一些 url 现在已移至子文件夹。

所以我有一个$uri. Itry_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)不起作用。

我显然写错了连接。

4

1 回答 1

1

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

location @check_subfolders {
    if (-f $document_root/articles/$uri ) {
        rewrite ^(.*) $scheme://$host:8090/articles$1 permanent;
    }
}
于 2013-01-07T18:15:26.187 回答