2013-12-20 99 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