我的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 /及其中的文件?
非常感谢您提供的信息和帮助!
答案 0 :(得分:1)
您可以使用try_files
指令在执行默认操作(例如重写规则)之前测试文件和目录的存在。有关详细信息,请参阅this document。
可能的实施方式是:
location /myapp {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1 last;
}
以上假设您定义了root
和index
,以及处理以.php
结尾的文件的位置。