使用try_files 403重写nginx

时间:2013-12-20 23:08:52

标签: nginx

我有一个带/ usercp /和usercp.php的网络服务器。我正在使用tryfiles并重新编写以查看file.php是否存在do file,否则goto / file /(在我的情况下是file = usercp)

这是我的nginx conf。

location / {
    try_files $uri $uri/ @extension-php;
}

location @extension-php {
    rewrite ^(.*)$ $1.php last;
}

这也使site.com/usercp/出现403错误。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

问题是你要优先考虑文件夹上的文件索引,如果你想要反对我建议你不要使用autoindex on,因为它暴露你文件夹的内容并交换try_files中的最后两个项目,试试这个

location / {
    try_files $uri $uri.php $uri/;
}

PS: $uri/如果不包含index中指定的索引文件,将始终返回403,因为默认情况下它禁止文件夹列表,您应该放置索引文件,如果这是您打算做的,或者只是从$uri/删除整个try_files,以便它返回404而不是403

答案 1 :(得分:0)

http://nginx.org/r/try_files

它的作用只是检查文件是否存在,然后提供存在的文件。

您声称/usercp/存在。因此,这就是它将尝试服务的东西。但您可能没有autoindex on,因此不允许使用目录列表 - 403 Forbidden