2013-12-20 102 views
0

我有一个Web服务器与/ usercp /和usercp.php。我正在使用tryfiles并重新写入,以查看file.php是否存在do文件,否则goto/file /(在我的情况下,file = usercp)nginx重写与try_files 403

这是我的nginx conf。

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

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

这也使得site.com/usercp/给出403错误。有任何想法吗?

+0

是的,但/usercp/.php不存在。你应该考虑一个斜线的可能性。试着用'rewrite ^(。*)/?$ $ 1.php last;' – foibs

回答

0

http://nginx.org/r/try_files

它能做什么是简单地检查文件是否存在,然后供应存在的文件。

您声明/usercp/存在。因此,这就是它会尽力服务的。但你可能没有autoindex on,因此,目录列表不允许使用— 403 Forbidden

1

问题是,如果你想反其道而行之,我建议不要使用autoindex on,因为它暴露了你的文件夹的内容并且交换了try_files中的最后2个项目,试试这个

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

PS:$uri/总是会因为默认情况下返回403,如果它不包含index指定的索引文件时,它禁止的文件夹列表,你要么把索引文件如果这是你打算做什么,或者从try_files中删除整个$uri/所以它会返回404而不是403