我遇到了三种不同的选项,用于从index.php到root进行301重定向。
选项1:将index.php重定向到www
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php$ / [L,R=301]
选项2:将index.php重定向到www
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [L,R=301]
选项3:将index.php重定向到www
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php [NC]
RewriteRule ^index\.php$ https://www.domain.co.uk/$1 [L,R=301]
有谁能帮助我理解上述三种替代选择的区别?在重写规则中,有什么影响:
/
/$1
https://www.domain.co.uk/$1
答案 0 :(得分:0)
第一个选项会将index.php
(从根级仅)重定向到/
。
示例:http://www.domain.com/index.php
变为http://www.domain.com/
。
第二个选项将index.php
重定向到其根文件夹
示例:http://www.domain.com/x/z/index.php
变为http://www.domain.com/x/z/
。
第三个选项相当于第一个选项,即使它有语法错误并且不会工作($1
为空,因为规则中没有捕获任何组)。
结论(将index.php
从根级别重定向到/
root)
如果我必须自己做,代码看起来像这样
RewriteCond %{THE_REQUEST} \s/index\.php\s [NC]
RewriteRule . / [R=301,L]