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"
(私はこれをキャッシュしたくない)
だが! 2つを組み合わせることができないようです。この構成では、リダイレクトは送信されますが、ヘッダーは送信されません。
<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)
リダイレクトを返す方法のアイデアwithキャッシュヘッダー?
ヘッダーディレクティブに「always」条件を追加してみてください。これにより、次のようになります。
Header always set Cache-Control max-age=0
Header always set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
これは、「常に」条件なしで機能するはずです。デフォルトでは、任意の2xx応答コードとして定義される「成功」に設定されていると思います。
PerlまたはPHPで中間者スクリプトを実装する必要があります(PHPを使用するので、既にロードされている場合は簡単です)。書き換えガイドを確認し、「拡張リダイレクト」を検索してください:
http://httpd.Apache.org/docs/2.2/misc/rewriteguide.html
Xredirectを設定してから、スクリプトを設定して、必要なヘッダーをプッシュアウトします...きれいではありませんが、私の知る限り、それが唯一の方法です。