Difference between revisions of "Friendly URL's"
m |
(re-write rules updated) |
||
Line 1: | Line 1: | ||
[[Category:MediaWiki]] | [[Category:MediaWiki]] | ||
− | = Mod-rewrite rules = | + | == Mod-rewrite rules == |
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 as follows: | 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 as follows: | ||
<pre> | <pre> | ||
− | + | RewriteEngine On | |
− | + | RewriteCond %{REQUEST_URI} ^/$ | |
− | + | RewriteRule ^/(.*) /index.php/Main_Page [L] | |
+ | RewriteCond %{REQUEST_URI} !^/(wiki|files)/ | ||
+ | RewriteRule ^/(.*) /index.php/$1 [L] | ||
</pre> | </pre> | ||
− | The | + | 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/od/media |
The re-write rule then assumes everything after the leading slash to be an article name and reformats the URL accordingly. Also <tt>$wgArticlePath = "/$1"</tt> is set in ''LocalSettings.php'' to make the friendly form the default way of rendering links. Links involving a query-string will use the usual format. | The re-write rule then assumes everything after the leading slash to be an article name and reformats the URL accordingly. Also <tt>$wgArticlePath = "/$1"</tt> is set in ''LocalSettings.php'' to make the friendly form the default way of rendering links. Links involving a query-string will use the usual format. | ||
− | = Bug fixes = | + | == Bug fixes == |
*It was transforming to <tt>...index.php?title=$1</tt>, but this cause the ampersand bug, see [[17 February 2007]] news item. | *It was transforming to <tt>...index.php?title=$1</tt>, 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. [[User:Nad|Nad]] 14:25, 14 Feb 2006 (NZDT) | + | *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. --[[User:Nad|Nad]] 14:25, 14 Feb 2006 (NZDT) |
+ | *Friendly URL's were updated again on [[23 June 2007]] to allow the main page to use the completely naked domain name --[[User:Nad|Nad]] 23:40, 23 June 2007 (NZST) | ||
− | = See also = | + | == See also == |
*[http://www.mediawiki.org/wiki/Manual:Short_URL MediaWiki's manual entry] | *[http://www.mediawiki.org/wiki/Manual:Short_URL MediaWiki's manual entry] | ||
*[http://meta.wikimedia.org/wiki/Make_non-ugly_URLs WikiMedia article on freindly URL's] | *[http://meta.wikimedia.org/wiki/Make_non-ugly_URLs WikiMedia article on freindly URL's] |
Revision as of 11:40, 23 June 2007
Mod-rewrite rules
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 as follows:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^/(.*) /index.php/Main_Page [L] RewriteCond %{REQUEST_URI} !^/(wiki|files)/ RewriteRule ^/(.*) /index.php/$1 [L]
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/od/media
The re-write rule then assumes everything after the leading slash to be an article name and reformats the URL accordingly. Also $wgArticlePath = "/$1" is set in LocalSettings.php to make the friendly form the default way of rendering links. Links involving a query-string will use the usual format.
Bug fixes
- 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)
- 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 (NZST)