Difference between revisions of "Friendly URL's"
(formatting) |
(show updated rules) |
||
Line 1: | Line 1: | ||
− | We use [http://httpd.apache.org/docs/mod/mod_rewrite.html mod-rewrite] to change the illegally formatted "friendly" request into a legitimate request directed at the ''index.php'' script like usual. Mod-rewrite is used to specify a condition pattern, and a transformation rule to apply to the URL if it matches the condition pattern. Our mod-rewrite directives are | + | We use [http://httpd.apache.org/docs/mod/mod_rewrite.html mod-rewrite] to change the illegally formatted "friendly" request into a legitimate request directed at the ''index.php'' script like usual. Mod-rewrite is used to specify a condition pattern, and a transformation rule to apply to the URL if it matches the condition pattern. Our mod-rewrite directives are in our [[Subversion]] repository in the [http://svn.organicdesign.co.nz/filedetails.php?repname=tools&path=%2Fwiki.vhost wiki.vhost] file which is directly included by our Apache configuration, and contains the following: |
{{code|<pre> | {{code|<pre> | ||
− | + | RewriteCond %{REQUEST_URI} ^/$ | |
− | + | RewriteCond %{HTTP_HOST} ^(www\.|wiki\.)?(.+)$ | |
− | + | RewriteRule ^ /%2/wiki/index.php/Main_Page [L] | |
− | RewriteCond %{REQUEST_URI} | + | |
− | RewriteRule | + | RewriteCond %{REQUEST_URI} ^/files/thumb/./../.*\& |
+ | RewriteRule ^(.*?)\&(.*)$ $1\%26$2 | ||
+ | |||
+ | RewriteCond %{REQUEST_URI} ^/files/thumb/./../.+?/[0-9]+px- | ||
+ | RewriteCond %{HTTP_HOST} ^(www\.|wiki\.)?(.+)$ | ||
+ | RewriteRule ^.+/(.+?)/([0-9]+)px- /%2/wiki/thumb.php?w=$2&f=$1 [L] | ||
+ | |||
+ | RewriteCond %{REQUEST_URI} ^/(wiki/|html/|files/|common/|blogs|[fF]avicon.ico|[rR]obots.txt) | ||
+ | RewriteCond %{HTTP_HOST} ^(www\.|wiki\.)?(.+)$ | ||
+ | RewriteRule (.*) /%2$1 [L] | ||
+ | |||
+ | RewriteCond %{HTTP_HOST} ^(www\.|wiki\.)?(.+)$ | ||
+ | RewriteRule (.*) /%2/wiki/index.php$1 [L] | ||
</pre>}} | </pre>}} | ||
Revision as of 21:06, 29 June 2011
We use mod-rewrite to change the illegally formatted "friendly" request into a legitimate request directed at the index.php script like usual. Mod-rewrite is used to specify a condition pattern, and a transformation rule to apply to the URL if it matches the condition pattern. Our mod-rewrite directives are in our Subversion repository in the wiki.vhost file which is directly included by our Apache configuration, and contains the following:
The first condition and rule pair handles requests to the naked domain name and rewrites the to Main_Page so that the URL doesn't get appended with the "Main Page" name. The second pair says not to touch any URL's which start with /wiki/ or /files/, this protects all old-style article requests, and requests to internal MediaWiki files like scripts or images. It also allows other directories of web documents outside the wiki such as http://www.organicdesign.co.nz/files/math/
The re-write rule then assumes everything after the leading slash to be an article name and reformats the URL accordingly. Currently the only MediaWiki globals used for the rewrite rules is;
It is set inside all default domains LocalSettings.php files through an include of a script called wikia.php (See Special:WikiaInfo) to make the friendly form the default way of rendering links. Links involving a query-string will use the usual format.
Bug fixes
- Rewrite rules updated on 29 June 2011 to fix a long-standing bug preventing thumbnails from working for images with ampersands in their titles --nad 14:02, 29 June 2011 (PDT)
- Friendly URL's were updated again on 23 June 2007 to allow the main page to use the completely naked domain name --Nad 23:40, 23 June 2007 *It was transforming to ...index.php?title=$1, but this cause the ampersand bug, see 17 February 2007 news item.
- Its been improved now so that URL's are only left alone if requesting a folder (following slash) of name starting with lowercase W. This fixes a bug where articles starting with W had to be specified with capital first letter. --Nad 14:25, 14 Feb 2006 (NZDT)
(NZST)