Apache-2.2

Apache重定向並設置記憶體頭?

  • March 7, 2016

在 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)

關於如何使用記憶體標頭返回重定向的任何想法?

嘗試將“always”條件添加到您的 Header 指令中,它應該如下所示:

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

這應該可以工作,沒有“總是”條件,我相信它預設為“onsuccess”,它被定義為任何 2xx 響應程式碼。

您需要在 Perl 或 PHP 中實現一個中間人腳本(我會使用 PHP,如果已經載入它會更簡單)。查看重寫指南,搜尋“擴展重定向”:

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

設置 xredirect,然後設置你的腳本來推出你想要的標題……這並不漂亮,但據我所知,這是唯一的方法。

引用自:https://serverfault.com/questions/173038