Professional Documents
Culture Documents
Mod Rewrite Cheat Sheet v2
Mod Rewrite Cheat Sheet v2
Start of string
#domain.com to domain2.com
End of string
RewriteCond
RewriteRule
(a|b)
a or b
(...)
Group section
[abc]
[^abc]
# domain.com/page.htm
\s
White space
RewriteRule
a?
Zero or one of a
a*
Zero or more of a
a*?
a+
One or more of a
# domain.com/category-name/
a+?
RewriteRule
a{3}
Exactly 3 of a
a{3,}
3 or more of a
a{3,6}
3 to 6 of a
a{3,6}?
3 to 6 of a, ungreedy
RewriteCond
%{HTTP_REFERER}
(viagra)
!(pattern)
RewriteCond
%{HTTP_REFERER}
(xxx)
RewriteRule
%{HTTP_HOST}
^(.*)$
^www\.domain\.com$
http://www.domain2.com/$1
[NC]
[R=301,L]
^page.htm$
domain.com/new_page.htm
new_page.htm
[R,NC,L]
^([A-Za-z0-9-]+)/?$
domain.com/categories.php?name=category-name
categories.php?name=$1
[L]
Example: Block Referrer Spam (where referring URL contains "viagra" or "xxx" )
.*
[NC,OR]
[NC]
[F]
RewriteRule Flags
R[=code]
%{HTTP_USER_AGENT}
%{TIME_YEAR}
%{HTTP_REFERER}
%{TIME_MON}
%{HTTP_COOKIE}
%{TIME_DAY}
header)
%{HTTP_FORWARDED}
%{TIME_HOUR}
%{HTTP_HOST}
%{TIME_MIN}
Proxy
%{HTTP_PROXY_CONNECTION}
%{TIME_SEC}
Last Rule
%{HTTP_ACCEPT}
%{TIME_WDAY}
Chain
T=mime-type
NS
%{REMOTE_ADDR}
NC
Case insensitive
%{REMOTE_HOST}
%{API_VERSION}
QSA
%{REMOTE_USER}
%{THE_REQUEST}
NE
%{REMOTE_IDENT}
%{REQUEST_URI}
PT
Pass through
%{REQUEST_METHOD}
%{REQUEST_FILENAME}
S=x
%{SCRIPT_FILENAME}
%{IS_SUBREQ}
E=var:value
%{PATH_INFO}
"var" to "value".
%{QUERY_STRING}
%{TIME}
Server Variables: Request
%{AUTH_TYPE}
Directives
RewriteEngine
RewriteCond Flags
Server Variables: HTTP Headers
RewriteOptions
NC
Case insensitive
OR
%{DOCUMENT_ROOT}
RewriteLogLevel
%{SERVER_ADMIN}
RewriteLock
%{SERVER_NAME}
RewriteMap
%{SERVER_ADDR}
RewriteBase
%{SERVER_PORT}
RewriteCond
RewriteRule
Moved permanently
%{SERVER_PROTOCOL}
302
Moved temporarily
%{SERVER_SOFTWARE}
403
Forbidden
404
Not Found
410
Gone
RewriteLog