Saubere URLs im Mediawiki mit .htaccess

am 03. Januar 2007 unter LAMP & Co abgelegt

Ich habe gerade mal wieder ein Wiki auf Basis von Mediawiki, das ja auch die Basis für die Wikipedia ist, eingerichtet. Dabei bin ich mal wieder über das alte Problem mit den URLs gestolpert. Denn wer möchte schon mit URLs wie “wikiverzeichnis/index.php?title=Haupseite” leben müssen? Leider fand ich die Beschreibungen im Netz teilweise ein wenig verwirrend. Also hier mein Weg.

Erst einmal ist wichtig, das beim Apache Webserver das Modul “redirect” aktiviert ist und nirgendwo in den Definitionen von Verzeichnissen (in der httpd.conf oder sites-enabled/000-default) der Eintrag “AllowOverwrite = None” steht. Im Verzeichnis mit der Installation des Wikis muss man dann folgenden Eintrag in der Datei “.htaccess” vornehmen.

Dabei ist es wichtig, jedes Unterverzeichnis und einigen wichtigen Dateien wie MediaWiki PHP Dateien, HTTP Fehlermeldungen, favicon.ico oder robots.txt vom Umschreiben der URI auszunehmen. Evtl. installierte Erweiterungen (z.B. FCKeditor) in Unterverzeichnissen müssen ebenfalls aufgenommen werden.

RewriteEngine On
RewriteBase /

# Ausnahmen von der Umleitung
RewriteCond %{REQUEST_URI} !^/wiki/stylesheets/
RewriteCond %{REQUEST_URI} !^/wiki/skins/
RewriteCond %{REQUEST_URI} !^/wiki/files/
RewriteCond %{REQUEST_URI} !^/wiki/images/
RewriteCond %{REQUEST_URI} !^/wiki/Images/
RewriteCond %{REQUEST_URI} !^/wiki/(redirect|texvc|index).php
RewriteCond %{REQUEST_URI} !^/wiki/sitemap.xml.php
RewriteCond %{REQUEST_URI} !^/wiki/error/(40(1|3|4)|500).html
RewriteCond %{REQUEST_URI} !^/wiki/favicon.ico
RewriteCond %{REQUEST_URI} !^/wiki/robots.txt

# Suchen ausnehmen
RewriteCond %{QUERY_STRING} ^$ [OR] %{REQUEST_URI} ^/wiki/Special:Search

# Hauptregel zum Umschreiben der Adressen
RewriteRule /?(.*)$ /wiki/index.php?title=$1 [L,QSA]

Zusätzlich muss man dann auch noch die Datei LocalSettings.php im Wurzelverzeichnis des Wiki anpassen. Dort müssen die folgenden Zeilen stehen:

$wgScriptPath       = “/wiki”;
$wgScript           = “$wgScriptPath/index.php”;
$wgRedirectScript   = “$wgScriptPath/redirect.php”;
$wgArticlePath      = “$wgScriptPath/$1″;
# $wgArticlePath      = “$wgScript?title=$1″;

Hier ist der Eintrag für den Pfad zu einem Artikel entscheiden: $wgArticlePath = “$wgScriptPath/$1″;

Einen Nachteil hat die Prozedur jedoch. Wenn ein Beitrag im Wiki genauso heisst, wie eine entsprechende Ausnahme im der Datei “.htaccess” wird man diesen Beitrag nicht im Wiki über die saubere Adresse erreichen können. Da es sich bei meinem Wiki allerdings um ein deutschsprachiges handelt, ist dieses Risiko wohl eher zu vernachlässigen.

Endlich online…

am 30. Oktober 2006 unter Allgemein abgelegt

Es hat lange genug gedauert, aber jetzt ist das Cillawigs-Blog online und damit auch eine würdige Webpräsenz für dieses Projekt!