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 代码。
怀特先生,非常感谢您的提示!在
目录中有一个/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
指令来控制。