出于美观原因(我更喜欢 URL 和页面之间有严格的一一映射),我不喜欢http://www.example.com/index.html和http://www.example.com/产生两个不同 URL 的相同内容。我希望http://www.example.com/作为规范的。
显而易见的解决方案:
Redirect permanent /index.html /
是错误的(无限循环)。
有更好的解决办法吗?这似乎出奇地困难。
答案1
尝试RewriteCond
一下mod_rewrite:
RewriteEngine On
RewriteCond %{QUERY_STRING} !^/$
RewriteRule /index.html / [R]
这表示如果查询字符串是不是 /
然后重写/index.html
为/
(不应循环)。
答案2
我的解决方案(似乎有效所以我接受了它)受到 PP 的回应的启发,它是:
RewriteEngine 开启 重写条件 %{REQUEST_URI} ^\/index\.html$ 重写规则 .* http://www.example.com/ [R=302,L]
有没有非 modrewrite 解决方案?我不得不激活一个新的 Apache 模块,我尽量避免这种情况。
答案3
RedirectMatch ^/index.html$ http://www.example.com/
答案4
非 mod_rewrite 解决方案...实际上 joschi 几乎已经找到了它,但是由于某些(我不清楚的)原因,您必须绕过无限循环:
RedirectMatch permanent ^/index\.html$ http://www.example.com/
AliasMatch ^/$ /var/www/index.html