.htaccess - 简单重定向:索引(没有扩展名!)/ index.html / index.php到root

时间:2016-08-17 02:21:55

标签: .htaccess redirect mod-rewrite

我的.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]

1 个答案:

答案 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]