如何排除其中的目录和文件 - 重写
Posted
技术标签:
【中文标题】如何排除其中的目录和文件 - 重写【英文标题】:How to exclude directory and files inside it - rewrite 【发布时间】:2016-08-19 13:25:01 【问题描述】:我有运行良好的 nginx 规则:
rewrite ^/myapp/(.*)/$ /myapp/good-file.php?param=$1;
但是如果我访问 /myapp/ 下的某个目录,它会在 .php 上方加载具有自己的 index.php 的真实子目录,例如,如果我访问:
http://www.example.com/myapp/sub-directory/
它从 good-file.php 加载东西,因为重写规则正在工作(它必须是)。
如果我有重写的习惯,如何排除 /myapp/sub-directory/ 和其中的文件?
非常感谢您提供的信息和帮助!
【问题讨论】:
你知道重写条件和重写规则吗?您需要告诉服务器,如果找不到目录,则应用规则! 【参考方案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
结尾的文件的位置。
【讨论】:
以上是关于如何排除其中的目录和文件 - 重写的主要内容,如果未能解决你的问题,请参考以下文章