来自Apache 2 文档:
MultiViews 的效果如下:如果服务器收到 的请求
/some/dir/foo
,如果/some/dir
启用了 MultiViews,/some/dir/foo
并且不是存在,那么服务器就会读取目录以查找名为的文件foo.*
,并有效地伪造一个命名所有这些文件的类型映射......
有没有办法让 MultiViews 发挥它的魔力,即使请求的文件做存在吗?例如我可能有这些文件:
- foo.html
- foo.html.gz
当/foo.html
请求时,我想返回foo.html.gz
是否Accept-Encoding: gzip
发送了标题。
MultiViews 可以很好地完成这项工作,但是您必须只请求/foo
或重命名foo.html
为foo.html.en
(这是一种黑客行为,如果您从非英语浏览器请求则不起作用)。
答案1
如果接受 gzip 压缩,这将使其加载 .gz 文件。否则它将跳过此规则并只加载普通的 html 文件。
注意:您必须安装 mod_rewrite 模块才能使用此功能。
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^(.*).html$ $1.html.gz [NC,L,QSA]