如何排除其中的目录和文件 - 重写

时间:2016-04-25 23:11:40

标签: php regex .htaccess mod-rewrite nginx

我的Nginx规则运作良好:

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

但是如果我访问/ myapp /下的某个目录,它会加载.php instad真正的子目录,它有自己的index.php,例如,如果我访问:

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

它从good-file.php加载东西,因为重写规则正在运行(必须是)。

如果我有重写的错误,如何排除/ myapp / sub-directory /及其中的文件?

非常感谢您提供的信息和帮助!

1 个答案:

答案 0 :(得分: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结尾的文件的位置。