Apache重定向并设置缓存头?


10

在Apache中进行重定向很容易(mod_alias):

RedirectMatch ^.*$ http://portal.example.com/

设置缓存头同样容易:

Header set Cache-Control max-age=0
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

(我不希望这个被缓存)

但!看来您无法将两者结合起来。此配置导致发送重定向,但不发送标头:

<VirtualHost *:80>
        ServerName __default__
        Header set Cache-Control max-age=0
        Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
        RedirectMatch ^.*$ http://portal.example.com/
</VirtualHost>

实际情况的示例:

jb@apto % telnet 192.168.0.1 80
Trying 192.168.0.1...
Connected to redirector.example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: foo

HTTP/1.1 302 Found
Date: Sat, 21 Aug 2010 09:36:38 GMT
Server: Apache/2.2.9 (Debian) Phusion_Passenger/2.2.9
Location: http://portal.example.com/
Vary: Accept-Encoding
Content-Length: 316
Content-Type: text/html; charset=iso-8859-1

(etc)

关于如何返回带有缓存头的重定向的任何想法?

Answers:


10

尝试在您的Header指令中添加“ always”条件,因此它应如下所示:

Header always set Cache-Control max-age=0
Header always set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

这应该可以工作,没有“始终”的条件,我相信它默认为“成功”,它定义为任何2xx响应代码。


!!! 不知道我怎么想念这个,但是是的!
雅各布·博格

是的,就是这样。大。
Cosimo 2013年

奇怪,这似乎不适用于自定义标头
2013年

0

您将需要在Perl或PHP中实现一个中间人脚本(我将使用PHP,如果已加载它会更简单)。查看重写指南,搜索“扩展重定向”:

http://httpd.apache.org/docs/2.2/misc/rewriteguide.html

设置xredirect,然后设置脚本以推出所需的标头...虽然不漂亮,但据我所知这是唯一的方法。


确实不是很漂亮,我很惊讶这不是更好的方法(直接在配置中),但这看起来像是正确的答案。:(
雅各布·博格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.