如何转义 Apache '<If>' 指令正则表达式中的斜杠符号"/"?



我想把。xhtml文件作为

  • application/xhtml+xml如果浏览器说它接受它。
  • text/html否则

我试着做它与mod_rewrite,但它没有工作与Options -FollowSymLinks(见为什么我得到403禁止时,查看受Apache RewriteRule影响的文件,如果我有'选项-FollowSymLinks ' ?)。

然后,我试了

<Files "*.xhtml">
    <If "%{HTTP:Accept} !~ /application/xhtml+xml/">
        ForceType text/html
    </If>
</Files>

但是我得到一个语法错误:未能编译正则表达式.

同时,我使用这个代码…

<Files "*.xhtml">
    <If "%{HTTP:Accept} !~ /xhtml+xml/">
        ForceType text/html
    </If>
</Files>

…它可以工作,但我想匹配正确的MIME类型

从Apache 2.4开始,这个改进似乎还在进行中。Apache团队成员"covener"推荐使用m#regexp#

那么你的代码应该是这样的…

<If "%{HTTP:Accept} !~ m#application/xhtml+xml#">

您可以使用像x2F这样的转义码来代替/

最新更新