在Apache 2.4中使用REQUEST_URI和ap_expr设置标头

时间:2019-05-08 20:49:21

标签: regex apache .htaccess

我需要为我们的sitemap.xml页面设置一个noindex标头。我不能使用<meta>标签,所以另一个选项似乎涉及通过Apache设置标头。

此外,我不能使用<Files>指令,因为我们的sitemap.xml是由PHP生成的,而不是文件。

我已经尝试过,但是我不认为RewriteCondHeader一起工作,因为这会影响所有页面:

RewriteCond %{REQUEST_URI} ^/sitemap\.xml$ [NC]
Header set X-Robots-Tag "noindex"

这不会产生任何作用:

<If "%{REQUEST_URI} =~ /^sitemap.xml$/">
    Header set X-Robots-Tag "noindex"
</If>

似乎最好的选择是使用ap_expr,但这也不起作用:

Header set X-Robots-Tag "noindex" "expr=%{REQUEST_URI} =~ m#^/sitemap\.xml$#i"

有人可以发现正则表达式问题吗?我是否误解了应该使用其中一种或多种技术?

对于它的价值,我们更喜欢对.htaccess文件进行版本控制,因此不要将诸如此类的配置项放在httpd.conf或vhost等中。

1 个答案:

答案 0 :(得分:0)

<If "%{REQUEST_URI} == '/sitemap.xml'">
    Header set X-Robots-Tag "noindex"
</If>

<If "%{THE_REQUEST} =~ m#\s/sitemap\.xml# ">
     Header set X-Robots-Tag "noindex"
</If>