RewriteRule
!\.(html|php)$ - [S=5]
RewriteRule
^.*-(vf12|vf13|vf5|vf35|vf1|vf10|vf33|vf8).+$ - [S=1]
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
RewriteCond
%{HTTP_HOST} !^www\.askapache\.com$ [NC]
RewriteRule
^(.*)$ http://www.askapache.com/$1 [R=301,L]
Sometimes your rewrites cause
infinite loops, stop it with one of these rewrite code snippets.
RewriteCond
%{REQUEST_URI} ^/(stats/|missing\.html|failed_auth\.html|error/).* [NC]
RewriteRule
.* - [L]
RewriteCond
%{ENV:REDIRECT_STATUS} 200
RewriteRule
.* - [L]
This is probably my favorite, and I
use it on every site I work on. It allows me to update my javascript and css
files in my visitors cache's simply by naming them differently in the html, on
the server they stay the same name. This rewrites all files for /zap/j/anything-anynumber.js
to /zap/j/anything.js and /zap/c/anything-anynumber.css to /zap/c/anything.css
RewriteRule
^zap/(j|c)/([a-z]+)-([0-9]+)\.(js|css)$ /zap/$1/$2.$4 [L]
When you use flash on your site and
you properly supply a link to download flash that shows up for non-flash aware
browsers, it is nice to use a shortcut to keep your code clean and your
external links to a minimum. This code allows me to link to site.com/getflash/ for non-flash aware browsers.
RewriteRule
^getflash/?$
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash
[NC,L,R=307]
On many sites, the page will be
displayed for both page.html and page.html?anything=anything, which hurts your
SEO with duplicate content. An easy way to fix this issue is to redirect
external requests containing a query string to the same uri without the
query_string.
RewriteCond
%{THE_REQUEST} ^GET /.*;.* HTTP/
RewriteCond
%{QUERY_STRING} !^$
RewriteRule
.* http://www.askapache.com%{REQUEST_URI}? [R=301,L]
This .htaccess rewrite example
invisibly rewrites requests for all Adobe pdf files to be handled by /cgi-bin/pdf-script.php
RewriteRule
^(.+)\.pdf$
/cgi-bin/pdf-script.php?file=$1.pdf [L,NC,QSA]
For sites using multiviews or with
multiple language capabilities, it is nice to be able to send the correct
language automatically based on the clients preferred language.
RewriteCond
%{HTTP:Accept-Language} ^.*(de|es|fr|it|ja|ru|en).*$ [NC]
RewriteRule
^(.*)$ - [env=prefer-language:%1]
This allows access to all files by
php fopen, but denies anyone else.
RewriteEngine
On
RewriteBase
/
RewriteCond
%{THE_REQUEST} ^.+$ [NC]
RewriteRule
.* - [F,L]
If you are looking for ways to block
or deny specific requests/visitors, then you should definately read Blacklist with mod_rewrite. I give it a 10/10
This can be very handy if you want
to serve media files or special downloads but only through a php proxy script.
RewriteEngine
On
RewriteBase
/
RewriteCond
%{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/.* HTTP [NC]
RewriteRule
.* - [F,L]
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
RewriteCond
%{HTTP_HOST} !^askapache\.com$ [NC]
RewriteRule
^(.*)$ http://askapache.com/$1 [R=301,L]
Uses a RewriteCond Directive
to check QUERY_STRING for passkey, if it doesn't find it it redirects all
requests for anything in the /logged-in/ directory to the /login.php script.
RewriteEngine
On
RewriteBase
/
RewriteCond
%{QUERY_STRING} !passkey
RewriteRule
^/logged-in/(.*)$ /login.php [L]
If the QUERY_STRING has any value at
all besides blank than the?at the end of /login.php? tells mod_rewrite to remove the
QUERY_STRING from login.php and redirect.
RewriteEngine
On
RewriteBase
/
RewriteCond
%{QUERY_STRING} .
RewriteRule
^login\.php /login.php? [L]
An error message related to this isRequest
exceeded the limit of 10 internal redirects due to probable configuration
error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use
'LogLevel debug' to get a backtrace.or
you may seeRequest exceeded the limit,probable configuration error,Use 'LogLevel debug' to get a
backtrace, orUse
'LimitInternalRecursion' to increase the limit if necessary
RewriteCond
%{ENV:REDIRECT_STATUS} 200
RewriteRule
.* - [L]
RewriteRule
^(.*)\.php$ /$1.html [R=301,L]
Redirects all files that end in
.html to be served from filename.php so it looks like all your pages are .html
but really they are .php
RewriteRule
^(.*)\.html$ $1.php [R=301,L]
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
#
If the hour is 16 (4 PM) Then deny all access
RewriteCond
%{TIME_HOUR} ^16$
RewriteRule
^.*$ - [F,L]
Converts all underscores
"_" in urls to hyphens "-" for SEO benefits... See the full article
for more info.
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
RewriteRule
!\.(html|php)$ - [S=4]
RewriteRule
^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule
^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule
^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule
^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
RewriteCond
%{ENV:uscor} ^Yes$
RewriteRule
(.*) http://d.com/$1 [R=301,L]
Options
+FollowSymLinks
RewriteEngine
On
RewriteBase
/
RewriteCond
%{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC]
RewriteCond
%{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$
[NC]
RewriteRule
^/(.*)$ http://%1/$1 [R=301,L]