我有 Nginx 规则运行良好:
rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1;
但是,如果我访问/myapp/下的某个目录,它会加载到.php instad 真正的子目录上方,该子目录有自己的索引.php,例如,如果我访问:
http://www.example.com/myapp/sub-directory/
它从好文件加载内容.php因为重写规则正在工作(必须如此)。
如果我有重写的扭结,我如何排除/myapp/sub-directory/和其中的文件?
非常感谢您提供的信息和帮助!
在
执行默认操作(如重写规则)之前,可以使用 try_files
指令测试文件和目录是否存在。有关详细信息,请参阅此文档。
可能的实现方式是:
location /myapp {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1 last;
}
上述假设您定义了root
和index
,以及处理以 .php
结尾的文件的位置。