.htaccess删除.html并强制重定向到无扩展名的网址

时间:2015-12-15 17:09:40

标签: apache .htaccess mod-rewrite redirect url-rewriting

我尝试从网址中删除.html个扩展名,并将302重定向到无扩展名网址,如下所示:

http://example.com/file.html - > http://example.com/file

我看了很多stackoverflow的答案,尝试过但不幸的是没有成功。我出来了,我不明白为什么它不起作用:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteCond %{REQUEST_URI} \.html$
RewriteRule (.*)\.html$ /$1 [R=302,L]  

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteCond %{REQUEST_URI} !\.html$ [NC]
RewriteRule ^(.*)$ $1.html

第一个块应重定向到无扩展名版本,第二个块应找到该文件。

1 个答案:

答案 0 :(得分:4)

您需要在此处使用%{THE_REQUEST}来防止重写循环错误。否则没有THE_REQUEST变量规则保持重写file => file.html => file => file.html ..

RewriteEngine On

RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule (.*) /%1 [R=302,L]  

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html