为什么重定向在 .htaccess 中不起作用?

问题描述 投票:0回答:1
RewriteCond %{QUERY_STRING} (.*)Itemid=111&(.*) [NC]
RewriteRule .* /d/index.php?%2 [R=301,L]

非常适合地址 /index.php?Itemid=111&board=100.300

但不适用于 /d/index.php?Itemid=111&board=100.300

也就是说,如果在子目录中,重定向不起作用。

我尝试了上面显示的 .htaccess 代码。

.htaccess mod-rewrite
1个回答
0
投票

怀特先生,非常感谢您的提示!在

/d/
目录中有一个
.htaccess
文件,其代码为:
RewriteEngine On
RewriteBase /d/
RewriteRule ^$ index.php [R=301,L]
我删除了它,现在它可以工作了。

是的,这肯定会导致问题,因为默认情况下不会继承 mod_rewrite 指令。子配置 (

/d/.htaccess
) 中的 mod_rewrite 指令将完全覆盖根目录中父
.htaccess
文件中的 mod_rewrite 指令。根目录中的 mod_rewrite 指令甚至不会被处理。

无论如何,

/d/.htaccess
中的这些指令似乎都是多余的,因此应该删除以解决此问题。

mod_rewrite 继承以及 mod_rewrite 指令如何在父/子配置之间进行合并可以使用

RewriteOptions
指令来控制。

© www.soinside.com 2019 - 2024. All rights reserved.