2016-04-25 45 views
2

我有一個良好的工作Nginx的規則:如何排除裏面的目錄和文件 - 重寫

rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1; 

但是如果我訪問了一些目錄/ MyApp的/,它加載.PHP instad真正子目錄下的上方

http://www.example.com/myapp/sub-directory/ 

,因爲重寫規則正在從好file.php加載的東西(必須):如果我訪問已經有了自己的index.php,例如。

我如何排除/ myapp /子目錄/裏面的文件,如果我有重寫的扭曲?

非常感謝您提供的信息和幫助!

+1

你知道重寫條件和重寫規則嗎?您需要告訴服務器,如果找不到目錄,則應用規則! –

回答

1

您可以使用try_files指令在採取默認操作(如重寫規則)之前測試文件和目錄的存在。詳情請參閱this document

一種可能的實現是:上述

location /myapp { 
    try_files $uri $uri/ @rewrite; 
} 
location @rewrite { 
    rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1 last; 
} 

假設你有一個rootindex定義和位置來處理文件與.php結束。