Mod-Rewriteを使用して他のURLにリダイレクトされるいくつかのURLがWebサイトにあります。例えば:
RewriteRule ^section$ /newsection [NC,L,R=301]
上記のルールは http://example.com/section を http://example.com/newsection にリダイレクトします(ここではexample.comを使用しています。 tは私の質問とは無関係なので、実際のURLを使用したい)
次に、webpagetest.orgでwebpagetestオプティマイザーを使用してページをテストし、次のようにリダイレクトページを受信し、エラーに進みました。
Leverage browser caching of static assets: ##/100
FAILED - (No max-age or expires) - http://example.com/section
そこで、CURLコマンドラインツールを使用して同じページにアクセスすると、結果は次のようになります。
体:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://example.com/newsection">here</a>.</p>
</body></html>
そしてヘッダー:
HTTP/1.1 301 Moved Permanently
Date: Sun, 08 Mar 2015 18:09:18 GMT
Server: Apache
Location: http://example.com/newsection
Content-Type: text/html; charset=iso-8859-1
ユーザーがリダイレクトページをロードするためだけにネットワークにアクセスする必要がないように、301または302ステータスコードを返すページにのみ、キャッシュコントロールまたは失効ヘッダーを将来の日付で追加できる方法はありますか?
RewriteRule
ディレクティブで環境変数を設定し、この環境変数の存在に基づいてCache-Control
ヘッダーを条件付きで設定できます...
RewriteRule ^section$ /newsection [NC,L,R=302,E=cachesection:1]
Header always set Cache-Control "max-age=86400" env=cachesection
...「一時的な」リダイレクトを1日間キャッシュします。