2016-04-25 78 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结束。