【问题标题】:Set Header using REQUEST_URI and ap_expr in Apache 2.4在 Apache 2.4 中使用 REQUEST_URI 和 ap_expr 设置 Header
【发布时间】:2019-05-08 20:49:21
【问题描述】:

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

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

我已经尝试过了,但我认为 RewriteCond 不能与 Header 一起使用,因为这会影响所有页面:

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 等中。

【问题讨论】:

  • 尝试使用/sitemap\.xml/i 而不是m#^/sitemap\.xml$#i
  • 谢谢@revo。那没有用,但我开始怀疑这与应用程序流的关系比我最初想象的要多。我很确定 REQUEST_URI 在 .htaccess 中解析为 index.php。

标签: regex apache .htaccess


【解决方案1】:
<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>

【讨论】:

  • 谢谢@dusan-bajic。这也不起作用,但我认为这种方法由于应用程序流而注定要失败。 REQUEST_URI 无法解析为 .htaccess 中的 sitemap.xml。我考虑过删除这个问题,但如果有人遇到类似问题,我会保留它。
  • 如果有规则将 /sitemap.xml 重写为 index.php,则可能会发生这种情况,但请尝试上述其他方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2023-03-25
  • 2018-06-11
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
相关资源
最近更新 更多