即使请求的文件存在,也能使 MultiViews 正常工作

即使请求的文件存在,也能使 MultiViews 正常工作

来自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.htmlfoo.html.en(这是一种黑客行为,如果您从非英语浏览器请求则不起作用)。

答案1

如果接受 gzip 压缩,这将使其加载 .gz 文件。否则它将跳过此规则并只加载普通的 html 文件。

注意:您必须安装 mod_rewrite 模块才能使用此功能。

RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^(.*).html$ $1.html.gz [NC,L,QSA]

相关内容