.htaccess 重定向到不同的文件夹是否会激活其中的第二个 .htaccess?

.htaccess 重定向到不同的文件夹是否会激活其中的第二个 .htaccess?

在我的 Apache 网站上,我有以下重定向:

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/$1

从根目录重定向到“Web”目录。

这也会通过目录的 .htaccess 运行/web/吗?

答案1

是的。(假设.htaccess子目录的覆盖功能未被禁用。)

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/$1

事实上,如果.htaccess子目录中的文件包含 mod_rewrite 指令,那么您就不需要该RewriteCond指令,因为子目录中的 mod_rewrite 指令将覆盖父目录中的指令(默认),从而防止重写循环。

请注意,您发布的指令中缺少一个L标志,因此处理将首先继续处理当前文件的其余部分.htaccess

次要的一点是,这严格来说是“重写”,而不是“重定向”。尽管 Apache 文档确实提到了“内部重定向”。“重定向”更常用于指代外部的3xx 重定向。

相关内容