2009-03-27 18 views
4

私はこれはPHPで些細なことでしょう、この302にCDNのための期限切れとM-キャッシュヘッダを追加しようとしているApacheの設定でリダイレクトなどのApacheで302のリダイレクトにヘッダを追加する方法は?

リダイレクト一時/foo.xml http://www.baz.com/foo.xml

を持っていますしかし、私はこれをApacheの設定ファイルで行う必要があります。

通常、これは次のように行われます。

ExpiresDefaultディレクティブ「アクセスプラス10分」で

ExpiresActiveが、これが唯一の302のリダイレクトのために動作しないようです。助言がありますか?

+1

Apacheの設定ですか?どのプログラミング言語からですか? –

答えて

0

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> 

私は正しく、以下の指摘の修正内容を反映する常にキーワードを追加して、(それが受け入れられたので)この答えを編集しました。

+8

リダイレクトが行われたときにヘッダーが追加されないため、実際には機能しません。 –

+0

はApache 2.2で動作していません – Thomasleveil

14
<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> 

HTTP 302応答(実際にはHTTP応答)でも機能するようにします。キーワード「常に」なしの の場合、「ヘッダーセット」指示は正常な応答、つまりHTTP 2xx応答でのみ機能します。

1

env=HTTPSを使用してヘッダーが設定されている場合、これを困難にするApache 2.2の奇妙なバグ(Apache 2.2.15に見られる)に注意してください。なんらかの理由で、env=HTTPSは、リダイレクト中にRewriteCond %{HTTPS}を使用してリダイレクトを制御しても起動できません。したがって、HTTP厳密トランスポートセキュリティ(HSTS)を有効にする私の設定では、と同じ値を持ち、env=X_HTTPSが評価されたときにnullに設定されないX_HTTPSという環境変数を作成するためにRewriteRuleを使用します。

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] 
+0

これはまさに私がやろうとしていることです。残念ながら、この解決策は私のためには機能しません。リダイレクトでは環境変数が動作しないようです。私が見つけた唯一の解決策は、動作する 'env ='句を省略することですが、プレーンなHTTPリクエストに対してStrict-Transport-Securityヘッダも送信します。 –

関連する問題