![即使请求的文件存在,也能使 MultiViews 正常工作](https://linux22.com/image/549052/%E5%8D%B3%E4%BD%BF%E8%AF%B7%E6%B1%82%E7%9A%84%E6%96%87%E4%BB%B6%E5%AD%98%E5%9C%A8%EF%BC%8C%E4%B9%9F%E8%83%BD%E4%BD%BF%20MultiViews%20%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
来自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]