微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上层 .htacces 文件中的代码被其他 .htaccess 文件中的代码忽略

如何解决上层 .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=123https://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 举报,一经查实,本站将立刻删除。