2013-04-18 20 views
7

Ich möchte Htaccess ausführen, um den folgenden Code NUR durchzuführen, wenn http_referer von Google (.com/.ru/.co.uk/.co.in/etc.) ist. Ist das möglich?Ist es möglich, Header bedingt zu setzen?

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

Antwort

14

Nun habe ich herausgefunden Sie Header eine andere Art und Weise festlegen können mod_rewrite macht es viel einfacher mit:

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 
4

Beachten Sie, dass die Bedingung in dem Header-Befehl setzen können selbst in ap_expr Format (tut erfordern mod_rewrite nicht):

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

(nicht sehr nützlich in Ihrem speziellen Fall, da Sie 3 Header hinzufügen müssen)