Apache 2.4では、次のようなことを試すことができます。
FileETag None
<IfModule mod_headers.c>
Header always unset ETag "expr=%{REQUEST_STATUS} == 404"
Header always set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" "expr=%{REQUEST_STATUS} == 404"
Header always set Pragma "no-cache" "expr=%{REQUEST_STATUS} == 404"
Header always set Expires "Wed, 11 Jan 1984 05:00:00 GMT" "expr=%{REQUEST_STATUS} == 404"
</IfModule>
これalways
は次の理由により重要です。
リダイレクトなど、ローカルで生成された非成功(2xx以外)の応答にヘッダーを追加します。この場合、最終応答では、常に対応するテーブルのみが使用されます。
あなたはすべての404を言いましたが、もちろん完全な参照のために、<FilesMatch>
それ<LocationMatch>
をaでラップするか、スコープを制限することは意味があるかもしれません。
expr
条件文の使用はmod_headersドキュメントのバージョン2.2にはないため、これはApache 2.4の新機能だと思います。
curl -I [foo]
この構成なしでテスト:
HTTP/1.1 404 Not Found
Date: Thu, 24 May 2018 17:44:29 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1
curl -I [foo]
この構成でテストします。
HTTP/1.1 404 Not Found
Date: Thu, 24 May 2018 17:44:42 GMT
Server: Apache/2.4.18 (Ubuntu)
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Content-Type: text/html; charset=iso-8859-1
出典:
http://httpd.apache.org/docs/current/mod/mod_headers.html