spacer.png, 0 kB
spacer.png, 0 kB
Home arrow All Articles arrow Web Hosting Articles arrow Ultimate Htaccess Code Snippets
Ultimate Htaccess Code Snippets Print E-mail

Heres my list of the ultimate apache htaccess code snippets and examples that I use all the time. I tried to keep them extremely minimalistic.

Each code snippet has been copied from htaccesselite. Additional and detailed info on each htaccess code snippet can be found at htaccessElite

Most of these snippets can be used with a Files or Filesmatch directive to only apply to certain files.





Make any file be a certain filetype (regardless of name or extension)
CODE
#Makes image.gif, blah.html, index.cgi all act as php
ForceType application/x-httpd-php






Authentication Magic

Require password for 1 file:
CODE
<Files login.php>
AuthName "Prompt"
AuthType Basic
AuthUserFile /home/askapache.com/.htpasswd
Require valid-user
</Files>


Protect multiple files:
CODE
<FilesMatch "^(exec|env|doit|phpinfo|w)*$">
AuthName "Development"
AuthUserFile /.htpasswd
AuthType basic
Require valid-user
</FilesMatch>


Example uses of the Allow Directive:
CODE
# A (partial) domain-name
Allow from 10.1.0.0/255.255.0.0

# Full IP address
Allow from 10.1.2.3

# More than 1 full IP address
Allow from 192.168.1.104 192.168.1.205

# Partial IP addresses
# first 1 to 3 bytes of IP, for subnet restriction.
Allow from 10.1
Allow from 10 172.20 192.168.2

# network/netmask pair
Allow from 10.1.0.0/255.255.0.0

# network/nnn CIDR specification
Allow from 10.1.0.0/16

# IPv6 addresses and subnets
Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10


Using visitor dependent environment variables:
CODE
SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
Order Deny,Allow
Deny from all
Allow from env=let_me_in



Allow from apache.org but deny from foo.apache.org
CODE
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org


Allow from IP address with no password prompt, and also allow from non-Ip address with password prompt:
CODE
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Allow from 172.17.10
Satisfy Any


block access to files during certain hours of the day
CODE
# If the hour is 16 (4 PM) Then deny all access
RewriteCond %{TIME_HOUR} ^16$    
RewriteRule ^.*$ - [F,L]






Redirect non-https requests to https server fixing double-login problem and ensuring that htpasswd authorization can only be entered using HTTPS
CODE
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "google.com"
ErrorDocument 403 https://google.com






SEO Friendly redirects for bad/old links and moved links
For single moved file
CODE
Redirect 301 /d/file.html http://www.htaccesselite.com/r/file.html


For multiple files like a blog/this.php?gh
CODE
RedirectMatch 301 /blog(.*) http://www.askapache.com/$1


different domain name
CODE
Redirect 301 / http://www.newdomain.com






Require the www
CODE
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]






Redirect everyone to different site except 1 IP address (useful for web-development)
CODE
ErrorDocument 403 http://www.someothersite.com
Order deny,allow
Deny from all
Allow from 24.33.65.6






CHMOD your files
chmod .htpasswd files 640
chmod .htaccess files 644
chmod php files 600
chmod files that you really don't want people to see as 400
NEVER chmod 777, if something requires write access use 766





Variable (mod_env) Magic
Set the Timezone of the server:
CODE
SetEnv TZ America/Indianapolis


Set the Server Administrator Email:
SetEnv SERVER_ADMIN This e-mail address is being protected from spam bots, you need JavaScript enabled to view it





Turn off the ServerSignature
CODE
ServerSignature Off






Add a "en" language tag and "text/html; UTF-8" headers without meta tags
CODE
AddDefaultCharset UTF-8
# Or AddType 'text/html; charset=UTF-8' html
DefaultLanguage en-US






Use a custom php.ini

Detailed instructions for doing this whether you are using php as a cgi or the apache module mod_php





Securing directories: Remove the ability to execute scripts

Heres a couple different ways I do it
CODE
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI


This is cool, you are basically categorizing all those files that end in those extensions so that they fall under the jurisdiction of the -ExecCGI command, which also means -FollowSymLinks (and the opposite is also true, +ExecCGI also turns on +FollowSymLinks)





Only allow GET and PUT request methods to your server.

CODE
Options -ExecCGI -Indexes -All
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD) RewriteRule .* - [F]






Processing All gif files to be processed through a cgi script
CODE
Action image/gif /cgi-bin/filter.cgi






Process request/file depending on the request method
CODE
Script PUT /cgi-bin/upload.cgi






Force Files to download, not be displayed in browser

CODE
AddType application/octet-stream .avi
AddType application/octet-stream .mpg

Then in your HTML you could just link directly to the file..
CODE
<a xhref="/movies/mov1.avi">Download Movie1</a>

And then you will get a pop-up box asking whether you want to save the file or open it.





Show the source of dynamic files

If you'd rather have .pl, .py, or .cgi files displayed in the browser as source rather than be executed as scripts, simply create a .htaccess file in the relevant directory with the following:

CODE
RemoveHandler cgi-script .pl .py .cgi






Dramatically Speed up your site by implementing Caching!

CODE
# MONTH
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

# WEEK
<FilesMatch "\.(js|css|pdf|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

# DAY
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>






Prevent Files image/file hotlinking and bandwidth stealing

CODE
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?askapache.com/.*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ http://www.askapache.com/legal.gif [R=302,L]






ErrorDocuments

CODE
ErrorDocument 404 /favicon.ico
ErrorDocument 403 https://secure.htaccesselite.com

CODE
ErrorDocument 404 /cgi-bin/error.php
ErrorDocument 400 /cgi-bin/error.php
ErrorDocument 401 /cgi-bin/error.php
ErrorDocument 403 /cgi-bin/error.php
ErrorDocument 405 /cgi-bin/error.php
ErrorDocument 406 /cgi-bin/error.php
ErrorDocument 409 /cgi-bin/error.php
ErrorDocument 413 /cgi-bin/error.php
ErrorDocument 414 /cgi-bin/error.php
ErrorDocument 500 /cgi-bin/error.php
ErrorDocument 501 /cgi-bin/error.php


Note: You can also do an external link, but don't do an external link to your site or you will cause a loop that will hurt your SEO.

--------------------

 
< Prev   Next >
spacer.png, 0 kB
spacer.png, 0 kB
spacer.png, 0 kB
spacer.png, 0 kB