Difference between revisions of "Friendly URL's"

From Organic Design wiki
m
(update description of rules)
Line 21: Line 21:
  
  
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 first section handles requests to the naked domain name and rewrites them to ''Main_Page'' so that the URL doesn't get appended with the "Main Page" name. The second pair fixes the ampersand problem in thumbnails. The third rewrites the thumbnail URL's so that arbitrary sizes of image thumbnails can be dynamically requested from the MediaWiki ''thumb.php'' script. The forth allows certain directories not to be rewritten such as those containing scripts or files. And finally the fifth section rewrites the friendly article format of URLs to the internal format including ''index.php'.
  
 
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;
 
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;

Revision as of 21:42, 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:

RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_HOST} ^(www\.|wiki\.)?(.+)$
RewriteRule .* /%2/wiki/index.php?title=Main_Page&redirect=no [L]

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]


The first section handles requests to the naked domain name and rewrites them to Main_Page so that the URL doesn't get appended with the "Main Page" name. The second pair fixes the ampersand problem in thumbnails. The third rewrites the thumbnail URL's so that arbitrary sizes of image thumbnails can be dynamically requested from the MediaWiki thumb.php script. The forth allows certain directories not to be rewritten such as those containing scripts or files. And finally the fifth section rewrites the friendly article format of URLs to the internal format including index.php'.

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;

{{{1}}}


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)

See also