如何将/directory/index.html和/directory/index.php重定向到/ directory /

时间:2014-05-11 08:16:42

标签: regex apache .htaccess mod-rewrite redirect

我必须做一些重定向 - index.html和index.php到/.

我可以使用以下行将www.domain.com/index.htmlwww.domain.com/index.php重定向到www.domain.com

RewriteRule ^index\.(php|html?)$ http://www.mydomain.com/ [R=301,L]

但是我仍然遇到这样的页面问题:

  • www.domain.com/directory/index.html - 返回 200 OK
  • www.domain.com/directory/index.php - 返回 300多个选项(不知道原因)

是否可以将它们重定向到www.domain.com/directory/并使用一个规则执行所有操作?

如果这有帮助,请点击我的.htaccess文件中的内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

## Redirecd index.html & php to /
RewriteRule ^index\.(php|html?)$ http://www...mydomain...com/ [R=301,L]

## 301 Redirect from non-www to www version
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

## Return 404 status code and display 404.html
ErrorDocument 404 /404.html

</IfModule>

3 个答案:

答案 0 :(得分:2)

试试这段代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

## Redirecd index.html & php to /
RewriteCond %{THE_REQUEST} /index\.(html|php) [NC]
RewriteRule ^(.*?)index\.(?:html|php)$ /$1 [L,R=302,NC,NE]

## 301 Redirect from non-www to www version
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

## Return 404 status code and display 404.html
ErrorDocument 404 /404.html

</IfModule>

答案 1 :(得分:0)

您可以尝试使用以下

替换您的第一个重写版
RewriteRule ^/?(.+/)?index\.(php|html?)$ /$1 [R=301,L]

答案 2 :(得分:0)

请试试这个。这适用于任何目录。

RewriteCond %{THE_REQUEST} ^.*/index\.(html|php)

RewriteRule ^(.*)index\.(html|php)$ http://www.domain.com/$1 [R=301,L]