我正在托管一个只是一堆静态.html文件的网站。我不希望在网址中包含.html
文件扩展名,因此我添加了重写规则:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.+)$ /$1.html [L]
这很简单且工作正常,但我现在还喜欢将以.html
结尾的网址重定向(302)到规范路径,即没有文件扩展名。我尝试了以下内容:
RewriteCond %{REQUEST_FILENAME} \.html$
RewriteRule ^(.+)\.html$ /$1 [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.+)$ /$1.html [L]
然而,这会导致无限的重定向循环。我怀疑那是因为第二条规则,即内部重写,仍在触发第一条规则,即外部重定向。
我还能怎样做到这一点?我已经查看了所有重写标志并尝试了一堆看起来很有希望,但我还没有成功完成这项工作。我如何从foo.html
重写为foo
并仍然从foo
到foo.html
进行内部重写?