Difference between revisions of "URL Rewrite"
From Hostek.com Wiki
(→Additional Resources) |
(→Additional Resources) |
||
Line 38: | Line 38: | ||
=== Externalization of Rewrite Rules === | === Externalization of Rewrite Rules === | ||
=== Additional Resources === | === Additional Resources === | ||
+ | |||
+ | *'''URL Rewrite''' | ||
+ | *:[http://www.iis.net/downloads/microsoft/url-rewrite http://www.iis.net/downloads/microsoft/url-rewrite] | ||
+ | |||
+ | *'''URL Rewrite Community Forum''' | ||
+ | *:[http://forums.iis.net/1152.aspx http://forums.iis.net/1152.aspx] | ||
== ISAPIRewrite (Windows) == | == ISAPIRewrite (Windows) == |
Revision as of 09:45, 16 July 2015
Contents
- 1 Overview
- 2 Platform Compatibility
- 3 Apache (Linux)
- 3.1 Directives - RewriteEngine
- 3.2 Directives - Rewrite Options
- 3.3 Directives - RewriteLog
- 3.4 Directives - RewriteLogLevel
- 3.5 Directives - RewriteLock
- 3.6 Directives - RewriteMap
- 3.7 Directives - RewriteBase
- 3.8 Directives - RewriteCond
- 3.9 Directives - RewriteRule
- 3.10 Flags - RewriteRules
- 3.11 Flags - RewriteCond
- 3.12 Variables - HTTP Headers
- 3.13 Variables - Request
- 3.14 Variables - Server Internals
- 3.15 Variables - Special
- 3.16 Variables - Time
- 3.17 <IfModule>
- 3.18 Common Issues - Filename
- 3.19 Common Issues - AllowOverride
- 3.20 Common Issues - Syntax
- 3.21 Common Issues - Special Characters
- 3.22 Common Issues - Nesting
- 3.23 Additional Resources
- 4 IIS (Windows)
- 5 ISAPIRewrite (Windows)
- 6 Redirect Codes
- 7 Regular Expressions
- 8 Common Rewrite Rules
- 8.1 Redirect to www
- 8.2 Redirect to non-www
- 8.3 Redirect Single Page
- 8.4 Redirect Entire Site
- 8.5 Redirect Entire Site with Query String
- 8.6 Redirect Entire Site to Sub-Folder
- 8.7 Redirect Sub-Folder to Different Site
- 8.8 Redirect to Different File Extension
- 8.9 Redirect to New Domain
- 8.10 Redirect Unsecure (HTTP) to Secure (HTTPS)
- 8.11 Redirect Mobile Users
- 8.12 Block IP Addresses
- 8.13 Block All Except IP Addresses
- 8.14 Block Bad Bots
- 9 Application-Specific Rewrite Rules
Overview
Platform Compatibility
Apache (Linux)
Directives - RewriteEngine
Directives - Rewrite Options
Directives - RewriteLog
Directives - RewriteLogLevel
Directives - RewriteLock
Directives - RewriteMap
Directives - RewriteBase
Directives - RewriteCond
Directives - RewriteRule
Flags - RewriteRules
Flags - RewriteCond
Variables - HTTP Headers
Variables - Request
Variables - Server Internals
Variables - Special
Variables - Time
<IfModule>
Common Issues - Filename
Common Issues - AllowOverride
Common Issues - Syntax
Common Issues - Special Characters
Common Issues - Nesting
Additional Resources
IIS (Windows)
Inbound Rules
Outbound Rules
Inheritance
Rewrite Conditions
Server Variables
String Functions
Rewrite Maps
Externalization of Rewrite Rules
Additional Resources
- URL Rewrite Community Forum
ISAPIRewrite (Windows)
Unsupported Features
Common Issues - Leading Slashes
Common Issues - Windows Filename Requirements
Additional Resources
- ISAPI_Rewrite 3
- ISAPI_Rewrite 3 - Documentation
Redirect Codes
301 - Moved Permanently
302 - Found
303 - See Other
307 - Temporary Redirect
308 - Permanent Redirect
Regular Expressions
Anchors
Character Classes
Character Classes - POSIX
Assertions
Quantifiers
Escape Sequences
Common Meta Characters
Special Characters
Groups and Ranges
Pattern Modifiers
String Replacement
Testing Tools
Below is a brief list of online tools to create and test regular expressions.
- Regular Expressions 101
- RegExr
- RegexPal
- Rubular
Additional Resources
Below is a list of useful online resource to help you learn and familiarize yourself with regular expressions.
- Regular Expression (Wikipedia)
- Regular Expressions
- Regular Expressions (Mozilla)
- JavaScrip RegExp Reference
Common Rewrite Rules
Redirect to www
# Add WWW Prefix <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC] </IfModule>
Redirect to non-www
# Remove WWW Prefix <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] </IfModule>
Redirect Single Page
# Redirect page Redirect 301 /old.html /new.html
Redirect Entire Site
# Redirect entire domain Redirect 301 / http://www.example.com
Redirect Entire Site with Query String
Redirect Entire Site to Sub-Folder
Redirect Sub-Folder to Different Site
Redirect to Different File Extension
# Redirect to new file extension RedirectMatch 301 (.*)\.html$ http://www.example.com$1.php
Redirect to New Domain
Redirect Unsecure (HTTP) to Secure (HTTPS)
Redirect Mobile Users
# Redirect mobile devices <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^ http://m.example.com%{REQUEST_URI} [R,L] </IfModule>
Block IP Addresses
# Block IP addresses Order Deny,Allow Deny from 1.2.3.4
Block All Except IP Addresses
# Block all except IP addresses Order Deny,Allow Deny from all Allow from 1.2.3.4
Block Bad Bots
# Block bad bots <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Bot [OR] RewriteCond %{HTTP_USER_AGENT} ^AnotherBotName RewriteRule ^.* - [F,L] </IfModule>
Application-Specific Rewrite Rules
CakePHP
CodeIgniter
concrete5
DotNetNuke
Joomla
Magento
Mura
osCommerce
WordPress
To enable permalinks within WordPress:
- Login to your WordPress dashboard
- Hover over Settings on the menu
- Choose Permalinks from the menu that appears
- Choose one of the available permalink structures
- Click the Save Changes button
Linux (.htaccess)
This file is generated by WordPress automatically when Permalinks are enabled using the instructions above. It is provided here for reference.
# Wordpress permalinks <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Windows (web.config)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="WordPress Permalinks - Homepage" stopProcessing="true"> <match url="^index\.php$" /> <action type="None" /> </rule> <rule name="WordPress Permalinks - All Requests" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>