2011-01-31 17 views
1

私は、Googleが過去の日付にそのHTMLの有効期限を設定していることに気づい:.htaccess - 過去に有効期限を日付に設定するにはどうすればよいですか?

Expires Thu Jan 01 1970 00:00:00 

私はこれを行うには.htaccessの設定方法を教えてください。私はExpiresByTypeを使用して他のリソースの有効期限を設定しますが、それらはすべて将来の時間です(たとえばaccess plus 10 years)。過去に設定する方法に関する提案はありますか?ありがとう。

答えて

3

HTMLの有効期限を過去に設定することで、HTMLがキャッシュされないようにしようとしていると仮定しています。残念ながら、Expiresディレクティブは将来の日付にしか使用できないため、使用することはできません。ヘッダーコマンドを使用して、HTMLファイルのキャッシュ方法を制御できます。

<FilesMatch "\.(html|htm)$"> 
FileETag None 
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Thu, 01 Jan 1970 00:00:00 GMT" 
</FilesMatch> 

mod_headersモジュールは、このメソッドを使用するようにApacheにインストールする必要があります。

編集:また、PHPを使用している場合は、PHPのheader機能を使用してこれらのヘッダーを設定できます。

header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate"); 
header("Pragma: no-cache"); 
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT"); 
+0

thaatは私がやろうとしているものです。 HTMLファイルがPHPから提供されている場合はどうなりますか?代わりにFilesMatch "\ .php $"を試しますか? URLにクエリ文字列がある場合はどうなりますか?その$記号は不一致を引き起こします。提案? – StackOverflowNewbie

+0

はい、 ''を変更することで、PHPファイルをターゲットにすることができます。しかし、PHPの 'header'関数を使うこともできます。私はこれを示すために私の答えを更新しました。 –

+0

私は純粋な.htaccessソリューションを探しています。クエリ文字列の問題はどうですか? FilesMatchの正規表現は、たとえば 'www.domain.com/index.html?q = hello'と一致しません。クエリ文字列を処理するにはどうすればよいですか? $記号を削除すると、クエリ文字列に潜在的に '.php'がある可能性があるので危険です。 – StackOverflowNewbie

関連する問題