使用htaccess删除路径上的.html

时间:2015-08-01 05:57:01

标签: html .htaccess mod-rewrite

我想删除所有链接末尾的.html,例如www.mywebsite.com/contact.html应为www.mywebsite.com/contact

以下代码完成了这项工作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

我也希望我的目录文件也删除.html,即www.mywebsite.com/rates/index.html应为www.mywebsite.com/rates

使用以下代码:

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

但是在一起,他们不起作用。如果第二个位于第一个下面只有第一个工作。如果我只有第二个选项,我的第一个选项不起作用,我的所有链接都被破坏了。我如何将两者合并?

1 个答案:

答案 0 :(得分:1)

添加.htaccess文件

Options +FollowSymlinks -MultiViews
    RewriteEngine on

    # to make `/path/index.html` to /path/
    RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.html [NC]
    RewriteRule . %1 [NE,R=301,L]

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

    RewriteCond %{REQUEST_URI} !\.html$ [NC]
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule . %{REQUEST_URI}.html [L]