$ End of string RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC] . Any single character RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L] (a|b) a or b (...) Group section Example: Page moved temporarily [abc] Item in range (a, b or c) [^abc] Not in range (not a, b or c) # domain.com/page.htm to domain.com/new_page.htm \s White space RewriteRule ^page.htm$ new_page.htm [R,NC,L] a? Zero or one of a a* Zero or more of a Example: Nice looking URLs (no querystring) a*? Zero or more of a, ungreedy a+ One or more of a # domain.com/category-name/ to domain.com/categories.php?name=category-name a+? One or more of a, ungreedy RewriteRule ^([A-Za-z0-9-]+)/?$ categories.php?name=$1 [L] a{3} Exactly 3 of a a{3,} 3 or more of a Example: Block Referrer Spam (where referring URL contains "viagra" or "xxx" ) a{3,6} 3 to 6 of a a{3,6}? 3 to 6 of a, ungreedy RewriteCond %{HTTP_REFERER} (viagra) [NC,OR] !(pattern) "Not" prefix. Apply rule if RewriteCond %{HTTP_REFERER} (xxx) [NC] pattern does not match. RewriteRule .* - [F]
RewriteRule Flags Server Variables: HTTP Headers Server Variables: Time
R[=code] Redirect to new URL, with %{HTTP_USER_AGENT} %{TIME_YEAR}
optional code (see below). %{HTTP_REFERER} %{TIME_MON} F Forbidden (sends 403 %{HTTP_COOKIE} %{TIME_DAY} header) %{HTTP_FORWARDED} %{TIME_HOUR} G Gone (no longer exists) %{HTTP_HOST} %{TIME_MIN} P Proxy %{HTTP_PROXY_CONNECTION} %{TIME_SEC} L Last Rule %{HTTP_ACCEPT} %{TIME_WDAY} N Next (i.e. restart rules) %{TIME} C Chain Server Variables: Request T=mime-type Set Mime Type Server Variables: Special NS Skip if internal sub-request %{REMOTE_ADDR} NC Case insensitive %{REMOTE_HOST} %{API_VERSION} QSA Append query string %{REMOTE_USER} %{THE_REQUEST} NE Do not escape output %{REMOTE_IDENT} %{REQUEST_URI} PT Pass through %{REQUEST_METHOD} %{REQUEST_FILENAME} S=x Skip next x rules %{SCRIPT_FILENAME} %{IS_SUBREQ} E=var:value Set environmental variable %{PATH_INFO} "var" to "value". %{QUERY_STRING} Directives %{AUTH_TYPE} RewriteEngine RewriteCond Flags RewriteOptions Server Variables: HTTP Headers NC Case insensitive RewriteLog OR Combines rules with logical %{DOCUMENT_ROOT} RewriteLogLevel "or" instead of "and". %{SERVER_ADMIN} RewriteLock %{SERVER_NAME} RewriteMap %{SERVER_ADDR} RewriteBase Redirection Header Codes %{SERVER_PORT} RewriteCond 301 Moved permanently %{SERVER_PROTOCOL} RewriteRule 302 Moved temporarily %{SERVER_SOFTWARE} 403 Forbidden Available free from 404 Not Found AddedBytes.com 410 Gone