3

index.html附加到以正斜杠结尾的任何 URL的 mod_rewrite 规则是什么?该规则应保留任何存在的查询字符串。我不能使用该DirectoryIndex指令,因为这些index.html文件实际上并不存在于文件系统上,但底层网站框架需要这些文件。

一些示例 URL 和所需结果如下所示:

http://example.com/                   -> http://example.com/index.html
http://example.com/?a=1               -> http://example.com/index.html?a=1
http://example.com/foo/               -> http://example.com/foo/index.html
http://example.com/foo/?b=2           -> http://example.com/foo/index.html?b=2
http://example.com/foo/index.html     -> http://example.com/foo/index.html
http://example.com/foo/index.html?c=3 -> http://example.com/foo/index.html?c=3
4

1 回答 1

7

查询字符串会自动被 mod_rewrite 附加,除非查询字符串本身正在被修改。这应该是您需要的:

RewriteEngine On
RewriteRule ^/?$ /index.html [L,R=301]
RewriteRule ^/?(.*)/$ /$1/index.html [L,R=301]

这使得当有人请求以 结尾的任何内容时/,将浏览器重定向到与结尾相同的 URL index.html。空白 URI 是一种特殊情况(第一条规则)。如果您不需要重定向浏览器,只需,R=301从方括号中删除。

于 2012-09-14T17:37:40.690 回答