我的.htaccess 301中的代码重定向:index.html和index.php到root(/):
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.(html?|php)\ HTTP/
RewriteRule ^(([^/]+/)*)index\.(html?|php)$ /$1 [R=301,L]
问题是,很多网络服务器都在对待索引' (没有.html或.php)作为有效请求;结果:example.com/index给出200状态(可能会创建重复的内容)。
所以我的目标是使用我当前的代码(上面)并添加到其中,以便也可以使用索引'被301重定向到root。换句话说,代码应该重定向:
example.com/index
example.com/index.html
example.com/index.php
到root(即example.com)
我在下面尝试了这个但是对我来说这太复杂了(我更喜欢添加到当前代码中,因此只有一个重定向代码,而不是多个RewriteCond / RewriteRule:
(这个没有用!)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index$|([^/]+*index)\.(html?|php))\ HTTP/
RewriteRule ^(index$|(([^/]+/)*)index\.(html?|php))$ /$1 [R=301,L]
答案 0 :(得分:2)
您可以调整正则表达式,使其与/index
或/index.html
或/index.php
匹配。
用以下内容替换您的规则:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index(\.(html?|php))?\ HTTP/ [NC]
RewriteRule ^((?:[^/]+/)*)index(\.(html?|php))?$ /$1 [R=301,L,NC,NE]