htaccess excerpts and notes
Here are some excerpts from my .htaccess files. I'm posting these because I often need to remember the syntax of these commands and it's easier to look at the commands here on my blog than to ssh to my DreamHost or Verio web-hosting account and look at them there. Also, I hope these excerpts and notes will be useful to others.
Note: In the code below, a line that begins with a single hash (
Used Everywhere
The next sections include examples that use the Apache mod_rewrite module. If they seem confusing, it's because they are! As Brian Behlendorf, one of the primary developers of the Apache web server, said:
Used at Deflexion.com
Used at Infinite Ink
Comments, suggestions, and questions are welcome!
Hashtag: # [?]
Note: In the code below, a line that begins with a single hash (
#) is code that is commented out and a line that begins with two hashes (##) is a comment about the code.Used Everywhere
## Block viewing of .htaccess files
<Files .htaccess>
order allow,deny
deny from all
</Files>
## Do not let IP address xxx.xxx.xxx.xx access (GET) the site
## Uncomment these 5 lines if someone or something is abusing the site
## Note: 'GET' can be replaced by 'GET POST PUT'
# <Limit GET>
# order allow,deny
# allow from all
# deny from xxx.xxx.xxx.xx
# </Limit>
## If a directory is requested, do not list the files in the directory
Options -Indexes
## Next is sometimes needed, but might already be set in the server configuration
# AddDefaultCharset UTF-8
## Next is needed if you use Rewrite rules
## (examples of RewriteCond and RewriteRule are in the sections below)
RewriteEngine On
## Next Rewrite option is often already set in the server configuration
## Uncomment if Rewrite rules don't work
# Options +FollowSymLinks
The next sections include examples that use the Apache mod_rewrite module. If they seem confusing, it's because they are! As Brian Behlendorf, one of the primary developers of the Apache web server, said:
“The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail.”This quote, along with some other good quotes, is on the Apache Documentation mod_rewrite page.
Used at Deflexion.com
## Specify the MIME type of unknown file extensions
## This is needed because I use extensionless URLs at Deflexion.com
## If default is HTML, use:
# DefaultType text/html
## If default is PHP, use:
DefaultType application/x-httpd-php
## If URL points to a directory, serve the first of these files that exist
DirectoryIndex index index.php index.html index.atom
## PHP include files are located in this directory
php_value include_path "/path/i/do/not/want/to/publish/on/my/blog/_shared"
## If 'http://deflexion.com/index' is requested, remove 'index'
## The goal is to get people & machines to link to 1 & only 1 URL for this page
## Details at Wikipedia's URL normalization (aka URL canonicalization)
## Another examples of URL canonicalization is in the Infinite Ink section below
## Note: '^[A-Z]{3,9}\ /' matches GET POST PROPFIND etc, followed by space slash
## This RewriteCond avoids infinite loops
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index$ http://deflexion.com/ [R=301,L]
## Redirect this URL-path to the current URL
Redirect permanent /messaging/blogs/ http://deflexion.com/2004/01/just-what-is-blog-atomizing
## For details about these RedirectMatch lines, see
## Twitter, TinyURL, Dots, Dashes, and My htaccess File
## Note: The order of these 5 RedirectMatch lines matters!
RedirectMatch 301 ^/(2008/../[^.]*)\.([^.]*)\.([^.]*)\.([^.]*)\.([^.]*)\.([^.]*)$ http://deflexion.com/$1-$2-$3-$4-$5-$6
RedirectMatch 301 ^/(2008/../[^.]*)\.([^.]*)\.([^.]*)\.([^.]*)\.([^.]*)$ http://deflexion.com/$1-$2-$3-$4-$5
RedirectMatch 301 ^/(2008/../[^.]*)\.([^.]*)\.([^.]*)\.([^.]*)$ http://deflexion.com/$1-$2-$3-$4
RedirectMatch 301 ^/(2008/../[^.]*)\.([^.]*)\.([^.]*)$ http://deflexion.com/$1-$2-$3
RedirectMatch 301 ^/(2008/../[^.]*)\.([^.]*)$ http://deflexion.com/$1-$2
^^^
'301' is equivalent to 'permanent'
Used at Infinite Ink
## If the requested hostname is anything other than www.ii.com,
## rewrite it to www.ii.com
RewriteCond %{HTTP_HOST} !^www.ii.com$
RewriteRule (.*) http://www.ii.com/$1 [R=301]
## Remove trailing 'index.html' from requested URLs
## See Note above about the regular expression '^[A-Z](3,9}\ /'
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html$ http://www.ii.com/$1 [R=301,L]
## Redirect this local URL-path to the current URL
Redirect permanent /communicate http://deflexion.com/2005/12/make-meta-comment
Comments, suggestions, and questions are welcome!
Labels: apache, htaccess, mime, php, regex, regularexpressions, sitedesign, sysadmin, urls
Hashtag: # [?]
Post & Read Comments (located elsewhere)
Post & Read Comments (located here)
Links to this page
Each item © Nancy McGough
Each comment © the author of the comment
Deflexion.com web site hosted
by DreamHost.com
←
More deflexions & reflexions, & feeds
available via the sidebar
top
&
For bookmarks & links, please use
Post a Comment