.htaccess将所有index.html重定向到父文件夹

时间:2014-05-01 10:25:00

标签: .htaccess http redirect

我需要像这样重定向所有index.html

原始网址

  1. www.example.com/lp/index.html
  2. www.example.com/sytem/index.html
  3. 所需网址

    1. www.example.com/lp
    2. www.example.com/sytem
    3. 我使用了以下内容,它成功重定向但是404页面

      RewriteEngine On
      
        RewriteRule ^index\.html$  [R=301,L]
        RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
      

4 个答案:

答案 0 :(得分:2)

你几乎把它弄好了,你做的对我来说看起来像是一个复制粘贴错误。你的第一个RewriteRule缺少一个参数 - 在[R=301,L]

之前应该有一个斜杠

你的htaccess应该是这样的:

RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]

参考: http://dense13.com/blog/2012/10/29/removing-index-html-with-mod_rewrite-in-htaccess/

答案 1 :(得分:1)

将此代码放在DOCUMENT_ROOT/.htaccess文件中:

DirectoryIndex index.html
RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^(.*?)index\.html$ /$1 [L,R=301,NC,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1/index\.html -f [NC]
RewriteRule ^(.+?)/?$ /$1/index.html [L]

答案 2 :(得分:0)

尝试将其放入.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1/index\.html [PT,L]

PT和L是重写标志,有关它们的更多详细信息,请检查http://httpd.apache.org/docs/2.2/rewrite/flags.html

答案 3 :(得分:0)

为什么不重定向索引。(任何内容)?喜欢index.php?的index.xhtml?

RewriteEngine On
RewriteRule ^index\.(.*)$ / [R=301,L]
RewriteRule ^(.*)/index\.(.*)$ /$1/ [R=301,L]

或仅基于初始URL请求(以避免与其他重写规则冲突):

RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.(.*) [NC]
RewriteRule ^(.*?)index\.(.*)$ /$1 [R=301,L]