Apache .htaccess Cheat Sheet
300 5 Minutes
600 10 Minutes
900 15 Minutes
1800 30 Minutes
2700 45 Minutes
3600 1 Hour
7200 2 Hours
10800 3 Hours
14400 4 Hours
18000 5 Hours
36000 10 Hours
39600 11 Hours
43200 12 Hours
46800 13 Hours
50400 14 Hours
54000 15 Hours
86400 1 Day
172800 2 Days
259200 3 Days
345600 4 Days
432000 5 Days
518400 6 Days
604800 1 Week
1209600 2 Weeks
1814400 3 Weeks
2419200 4 Weeks
4838400 2 Months
7257600 3 Months
9676800 4 Months
12096000 5 Months
14515200 6 Months
16934400 7 Months
19353600 8 Months
21772800 9 Months
24192000 10 Months
26611200 11 Months
29030400 12 Months
Hide files in directory browsing
IndexIgnore *.gif *.jpg IndexIgnore *
Enable / disable directory browsing
Options +Indexes
-or-
Options -Indexes
Customize Error Messages
ErrorDocument 403 /forbidden.html ErrorDocument 404 /notfound.html ErrorDocument 500 /servererror.html
Change script extensions
AddType application/x-httpd-php .myext
Change Default Page (order is followed)
DirectoryIndex somefile.html index.html index.php
Configure allowed directives in .htaccess files (in main configuration file)
AllowOverride [ All | None ] | directive-list ...
AllowOverride All (AuthConfig, FileInfo, Indexes, Limit, Option)
Redirect request
Redirect [ status ] [ path ] [ url ]
Redirect oldpage.html /test/newpage.html Redirect /olddir http://www.domainname.com/newdir/ Redirect permanent oldpage.html /test/newpage.html Redirect temp oldpage.html newpage.html Redirect gone oldpage.html
Block access from specific IP blocks/Domain
<limit GET POST PUT> order deny,allow deny from 1.2.3.4 deny from 5.6.7.8 deny from .spammers.com allow from all </limit>
Allow access only from specific IP blocks
order deny,allow deny from all allow from 192.168.0.0/24 allow from 10.0.
Enable Gzip – Save Bandwidth
<ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule>
Set an Expires header and enable Cache-Control
<ifmodule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType text/html "access plus 7200 seconds" ExpiresByType image/gif "access plus 518400 seconds" ExpiresByType image/jpeg "access plus 518400 seconds" ExpiresByType image/png "access plus 518400 seconds" ExpiresByType text/css "access plus 518400 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" </ifmodule> <ifmodule mod_headers.c> <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> Header set Cache-Control "max-age=518400, public" </filesmatch> <filesmatch "\.(html|htm)$"> Header set Cache-Control "max-age=7200, private, must-revalidate" </filesmatch> <filesmatch "\.(pdf)$"> Header set Cache-Control "max-age=86400, public" </filesmatch> <filesmatch "\.(js)$"> Header set Cache-Control "max-age=216000, private" </filesmatch> </ifmodule>
Block site from specific referrers
RewriteEngine on
RewriteCond %{HTTP_REFERER} badsite\.com [NC]
RewriteRule .* - [F]
Block Hot Linking/Bandwidth hogging
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
Redirect to domain name without 'www' prefix
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Redirect to domain name with 'www' prefix
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]




