10/29/11

mod_rewrite Cheat Sheet

Source:
http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/

mod_rewrite RewriteRule Flags

CChained with next rule
CO=cookieSet specified cookie
E=var:valueSet environmental variable “var” to “value”
FForbidden (403 header)
GGone - no longer exists
H=handlerSet handler
LLast - stop processing rules
NNext - continue processing
NCCase insensitive
NEDo not escape output
NSIgnore if subrequest
PProxy
PTPass through
R[=code]Redirect to new URL, with optional code (see below)
QSAAppend query string
S=xSkip next x rules
T=mime-typeSet mime type

mod_rewrite RewriteCond Flags

NCCase insensitive
ORCombine with next rule using 'OR' instead of the default of 'AND'

Redirection Header Codes

301Moved permanently
302Moved temporarily (default)

mod_rewrite Directives

RewriteEngine
RewriteOptions
RewriteLog
RewriteLogLevel
RewriteLock
RewriteMap
RewriteBase
RewriteCond
RewriteRule
 

Regular Expressions Syntax

^Start of string
$End of string
.Any single character
(a|b)a or b
(...)Group section
[abc]In range (a, b or c)
[^abc]Not in range
\sWhite space
a?Zero or one of a
a*Zero or more of a
a*?Zero or more, ungreedy
a+One or more of a
a+?One or more, ungreedy
a{3}Exactly 3 of a
a{3,}3 or more of a
a{,6}Up to 6 of a
a{3,6}3 to 6 of a
a{3,6}?3 to 6 of a, ungreedy
\Escape character
[:punct:]Any punctuation symbol
[:space:]Any space character
[:blank:]Space or tab
There's an excellent regular expression tester at: http://regexpal.com/

mod_rewrite Server Variables: HTTP Headers

%{HTTP_USER_AGENT}
%{HTTP_REFERER}
%{HTTP_COOKIE}
%{HTTP_FORWARDED}
%{HTTP_HOST}
%{HTTP_PROXY_CONNECTION}
%{HTTP_ACCEPT}

mod_rewrite Server Variables: Server Internals

%{DOCUMENT_ROOT}
%{SERVER_ADMIN}
%{SERVER_NAME}
%{SERVER_ADDR}
%{SERVER_PORT}
%{SERVER_PROTOCOL}
%{SERVER_SOFTWARE}
 

mod_rewrite Sample Rule: Site Moved

# Site moved permanently
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$http://www.domain2.com/$1 [R=301,L]
Rewrites domain.com to domain2.com

mod_rewrite Sample Rule: Temporary Page Move

# Page has moved temporarily
RewriteRule ^page.html$ new_page.html [R,NC,L]
Rewrites domain.com/page.html to domain.com/new_page.html

mod_rewrite Sample Rule: Nice URLs

# Nice URLs (no query string)
RewriteRule ^([A-Za-z0-9-]+)/?$ categories.php?name=$1 [L]
Rewrites domain.com/category-name-1/ to domain.com/categories.php?name=category-name-1

mod_rewrite Server Variables: Special

%{API_VERSION}
%{THE_REQUEST}
%{REQUEST_URI}
%{REQUEST_FILENAME}
%{IS_SUBREQ}
%{HTTPS}

mod_rewrite Server Variables: Request

%{REMOTE_ADDR}
%{REMOTE_HOST}
%{REMOTE_PORT}
%{REMOTE_USER}
%{REMOTE_IDENT}
%{REQUEST_METHOD}
%{SCRIPT_FILENAME}
%{PATH_INFO}
%{QUERY_STRING}
%{AUTH_TYPE}

mod_rewrite Server Variables: Time

%{TIME_YEAR}
%{TIME_MON}
%{TIME_DAY}
%{TIME_HOUR}
%{TIME_MIN}
%{TIME_SEC}
%{TIME_WDAY}
%{TIME}

No comments:

Quick HTTP to HTTPS - Apache2

There are several methods for redirecting your Apache-based website visitors who might type your servers URL using the plain (non-secure) HT...