如何解决上层 .htacces 文件中的代码被其他 .htaccess 文件中的代码忽略
我的服务器上有两个 .htaccess 文件。
/public_html/.htaccess
包含一些命令,例如将所有内容重定向到 https://www.
并始终在 url 中添加尾部斜杠。
/public_html/test_path/.htaccess
包含以下代码:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)/?$ ?id=$1 [L,QSA]
这是重写例如https://www.example.com/test_path?id=123
到 https://www.example.com/test_path/123
。
出于某种原因,/public_html/test_path/.htaccess
中的代码阻止了 /public_html/.htaccess
中的代码被执行。
意味着,/public_html/test_path/.htaccess
中的重写规则有效,但 /public_html/.htaccess
中的代码不再受到尊重,例如不再重定向到 https://www.
。
为什么 /public_html/test_path/.htaccess
中的代码会阻止 /public_html/.htaccess
中的代码也被执行?
解决方法
出于某种原因,/public_html/test_path/.htaccess
中的代码阻止了 /public_html/.htaccess
中的代码被执行。
这是设计使然。如果当前目录有一个带有 RewriteEngine On
的 .htaccess,那么它会覆盖父 .htaccess 指令。
如果您希望在之前应用父 .htaccess 规则,请使用 RewriteOptions
directive:
RewriteOptions InheritBefore
在 RewriteEngine On
行之前。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。