使用 mod_headers 覆盖 mod_alias

使用 mod_headers 覆盖 mod_alias

我正在尝试使用mod_headers通过使用指令来更改Location正在发送的标头,但它们都没有被重写。我的 中有以下内容;mod_aliasRedirecthttp.conf

Header edit Location //example.com //example.com.dev

.htaccess我的文件中有:

Redirect temp /foo http://example.com/

但标题从未改变。我可以通过在另一个指令下方添加以下内容来确认它正在加载模块并读取指令:

Header set FOOBAR bazbax

我可以看到新的标题出现了。

我该怎么做才能让它正常工作?

答案1

在里面mod_headers 文档中,Header 指令规定如下:

可选的条件参数决定了此指令将针对哪个内部响应标头表进行操作。服务器的其他组件可能已将其响应标头存储在与 onsuccess 对应的表中或与 always 对应的表中。此处的“Always”是指您添加的标头是否会在成功和不成功的响应期间发送,但如果您的操作是现有标头的函数,则必须继续阅读以了解进一步的复杂性。

在与下列情况类似的情况下,可能需要将 onsuccess 的默认值更改为 always。另请注意,在某些情况下,在两种条件下重复此指令是有意义的,因为对于现有标头而言,always 不是 onsuccess 的超集:

  • 您正在向非成功(非 2xx)响应(例如重定向)添加标头,在这种情况下,最终响应中仅使用与始终对应的表。

...

这很可能是您遇到的问题,因为您通过 mod_alias 发出了 3xx 响应。

相关内容