如何在Apache中向302重定向添加附加头?

如何在Apache中向302重定向添加附加头?,apache,redirect,cdn,http-status-code-302,Apache,Redirect,Cdn,Http Status Code 302,我在Apache配置中有一个重定向,比如 重定向temp/foo.xml 我正在尝试将CDN的Expire和m-cache标头添加到此302。这在php中是微不足道的,但我需要在Apache配置文件中这样做 通常是这样做的: 过期于 ExpiresDefault“访问加10分钟” 但这似乎只适用于302重定向。有什么建议吗?查看Apache的mod_headers模块 也许是这样的: <Location /foo.xml> Redirect temp /foo.xml ht

我在Apache配置中有一个重定向,比如

重定向temp/foo.xml

我正在尝试将CDN的Expire和m-cache标头添加到此302。这在php中是微不足道的,但我需要在Apache配置文件中这样做

通常是这样做的:

过期于 ExpiresDefault“访问加10分钟”


但这似乎只适用于302重定向。有什么建议吗?

查看Apache的mod_headers模块

也许是这样的:

<Location /foo.xml>
   Redirect temp /foo.xml http://www.baz.com/foo.xml
   Header always set ExpiresActive On
   Header always set ExpiresDefault "access plus 10 minutes"
</Location>

重定向temp/foo.xmlhttp://www.baz.com/foo.xml
标头始终将ExpireActive设置为On
标头始终设置ExpiresDefault“访问加10分钟”
我编辑了这个答案(自被接受以来),添加了始终关键字,以反映Fix在下面正确指出的内容。


<Location /foo.xml>
   Redirect temp /foo.xml http://www.baz.com/foo.xml
   Header always set ExpiresActive On
   Header always set ExpiresDefault "access plus 10 minutes"
</Location>
重定向temp/foo.xmlhttp://www.baz.com/foo.xml 标头始终将ExpireActive设置为On 标头始终设置ExpiresDefault“访问加10分钟”
让它甚至可以与HTTP 302响应(实际上是任何HTTP响应)一起工作;
如果没有关键字“always”,指令“Header set”仅适用于成功响应,即HTTP 2xx响应。

请注意Apache 2.2(在Apache 2.2.15中观察到)中的一个奇怪错误,如果您使用
env=HTTPS
来控制何时设置标头,则很难做到这一点。由于某些原因,重定向过程中无法触发
env=HTTPS
,即使使用
RewriteCond%{HTTPS}
on控制重定向。因此,在启用HTTP严格传输安全性(HSTS)的配置中,我使用重写规则创建一个名为
X_HTTPS
的环境变量,该变量的值与
HTTPS
相同,但在计算
env=X_HTTPS
时,该变量不会设置为null:

SetEnv HSTS "max-age=31536000; includeSubDomains; preload"

# For some reason in Apache 2.2, HTTPS env variable is not available during redirects
RewriteCond %{HTTPS} on
RewriteRule ^.*$ - [ENV=X_HTTPS:%{HTTPS}]
# Set HSTS Header if the page is delivered via SSL
Header always set Strict-Transport-Security %{HSTS}e env=X_HTTPS

# Redirect SSL-only non-www page to www and quit
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=303,L]

# Redirect ANY non-SSL page to SSL
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=303,L]

Apache配置?通过哪种编程语言?除了,这实际上不起作用,因为重定向完成时不会添加头。这正是我要做的。不幸的是,这个解决方案不适合我。似乎没有环境变量与重定向一起工作。我发现的唯一解决方案是省略
env=
子句,该子句可以工作,但也可以在普通HTTP请求上发送严格的传输安全头。