Hello dear programmers and readers, today we will continue our series of useful .htaccess code snippets for your website.
Here in this part, our focus will be on Caching Scheme, password protect file, custom headers, and few more. So lets start the blog.
#21 - Implementing a Caching Scheme with .htaccess
# year <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$"> Header set Cache-Control "public" Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" Header unset Last-Modified </FilesMatch> #2 hours <FilesMatch "\.(html|htm|xml|txt|xsl)$"> Header set Cache-Control "max-age=7200, must-revalidate" </FilesMatch> <FilesMatch "\.(js|css)$"> SetOutputFilter DEFLATE Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" </FilesMatch>
#22 - Password Protect single file
<Files login.php> AuthName "Prompt" AuthType Basic AuthUserFile /web/askapache.com/.htpasswd Require valid-user </Files>
#23 - Password Protect multiple files
<FilesMatch "^(private|phpinfo).*$"> AuthName "Development" AuthUserFile /.htpasswd AuthType basic Require valid-user </FilesMatch>
#24 - Send Custom Headers
Header set P3P "policyref="https://www.yourdomain.com/w3c/p3p.xml"" Header set X-Pingback "https://www.yourdomain.com/xmlrpc.php" Header set Content-Language "en-US" Header set Vary "Accept-Encoding"
#25 - Blocking based on User-Agent Header
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT
#26 - Blocking with RewriteCond
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC] RewriteRule . - [F,L]
#27 - .htaccess for mod_php
SetEnv PHPRC /location/todir/containing/phpinifile
#28 - .htaccess for php as cgi
AddHandler php-cgi .php .htm Action php-cgi /cgi-bin/php5.cgi
#29 - Shell wrapper for custom php.ini
#!/bin/sh export PHP_FCGI_CHILDREN=3 exec php5.cgi -c /abs/php5/php.ini
#30 - Add values from HTTP Headers
SetEnvIfNoCase ^If-Modified-Since$ "(.+)" HTTP_IF_MODIFIED_SINCE=$1 SetEnvIfNoCase ^If-None-Match$ "(.+)" HTTP_IF_NONE_MATCH=$1 SetEnvIfNoCase ^Cache-Control$ "(.+)" HTTP_CACHE_CONTROL=$1 SetEnvIfNoCase ^Connection$ "(.+)" HTTP_CONNECTION=$1 SetEnvIfNoCase ^Keep-Alive$ "(.+)" HTTP_KEEP_ALIVE=$1 SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 SetEnvIfNoCase ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1
#31 - Stop hotlinking
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/.*$ [NC] RewriteRule \.(gif|jpg|swf|flv|png)$ https://www.yourdomain.com/feed.gif [R=302,L]
Guys these are the snippets you can use for your .htaccess file, In next blog we will share some example of .htaccess files. Please share your valuable feedback in the comment section.