web-dev-qa-db-ja.com

条件付きでヘッダーを設定することは可能ですか?

Http_refererがgoogle(.com/.ru/.co.uk /.co.in/など)からのものである場合にのみ、htaccessで次のコードを実行したいと思います。これは可能ですか?

<filesMatch ".(jpg|jpeg|png|gif)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</FilesMatch>
14
GameDevGuru

Mod_rewriteを使用してヘッダーを別の方法で設定すると、はるかに簡単になることがわかりました。

RewriteCond %{HTTP_USER_AGENT} !(googlebot|bingbot|Baiduspider) [NC]  
RewriteCond %{HTTP_REFERER} google [NC]  
RewriteRule ^.*$ - [ENV=LONGCACHE:true]
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" env=LONGCACHE
Header set Pragma "no-cache" env=LONGCACHE
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" env=LONGCACHE 
24
GameDevGuru

ap_expr 形式(mod_rewriteは不要)で、ヘッダーコマンド自体に条件を設定できることに注意してください。

Header set Pragma "no-cache" "expr=%{HTTP_USER_AGENT}=~/(googlebot|bingbot|Baiduspider)/i && %{HTTP_REFERER}=~/google/i"

(3つのヘッダーを追加する必要があるため、特定のケースではあまり役に立ちません)

7
rustyx