Recipe 3.7 Not Logging Image Requests from Local Pages
Problem
You want to log requests for
images on your site, except when
they're requests from one of your own pages. You
might want to do this to keep your logfile size down, or possibly to
track down sites that are hijacking your artwork and using it to
adorn their pages.
Solution
Use SetEnvIfNoCase to restrict logging to only
those requests from outside of your site:
<FilesMatch \.(jpg|gif|png)$>
SetEnvIfNoCase Referer "^http://www.example.com/" local_referrer=1
</FilesMatch>
CustomLog logs/access_log combined env=!local_referrer
Discussion
In many cases, documents on a web server include references to images
also kept on the server, but the only item of real interest for log
analysis is the referencing page itself. How can you keep the server
from logging all the requests for the images that happen when such a
local page is accessed?
The SetEnvIfNoCase will set an environment
variable if the page that linked to the image is from the
www.example.com site (obviously you should
replace that site name with your own) and the request is for a GIF,
PNG, or JPEG image.
|
SetEnvIfNoCase is the same as
SetEnvIf except that variable comparisons are done
in a case-insensitive manner.
|
|
The
CustomLog directive will log all requests that
do not have that environment variable set, i.e.,
everything except requests for images that come from links on your
own pages.
This recipe only works for clients that actually report the referring
page. Some people regard the URL of the referring page to be no
business of anyone but themselves, and some clients permit the user
to select whether to include this information or not. There are also
"anonymising" sites on the Internet
that act as proxies and conceal this information.
See Also
|