我尝试从网址中删除.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
第一个块应重定向到无扩展名版本,第二个块应找到该文件。
答案 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