Change PmWiki URL

PmWiki wurde so entwickelt, dass es zum Unterhalten einer Website einsetzbar ist. Vielfach wollen Administratoren den Zugriff auf PmWiki-Seiten ermöglichen, ohne dass “pmwiki.php” in der Adresszeile des Browsers des Benutzers auftaucht. Diese Seite beschreibt, auf welchen Wegen sich die URL einer Installation von PmWiki so abändern lässt, dass sie von der URL des Skriptes pmwiki.php abweicht. Die untenstehenden Beispiele gehen davon aus, dass eine URL wie etwa http://www.beispiel.de/wiki auf das Skript pmwiki.php auf der Website www.beispiel.de verweisen soll.

Es gibt vier unterschiedliche Wege zum Verändern der URL: Aliasing, das Verwenden eines “wiki”-Skriptes, das Umbenennen des Skriptes pmwiki.php sowie das Verwenden von mod_rewrite.

Aliasing

Wenn Du Zugriff auf die Konfigurationsdatei des Webservers hast, dann führt das Hinzufügen der Zeile

        Alias /wiki /pfad/zu/pmwiki.php

zu der Konfigurationsdatei dazu, dass eine entsprechendes Alias verwendet wird. In einigen Fällen (z.B. bei Apache 2.0) musst Du den absoluten Pfad des Skriptes pmwiki.php angeben, z.B.:

        Alias /wiki /home/account/www/pmwiki.php

auch wenn Du /home/account/www bereits als WWW-Wurzelverzeichnis (DocumentRoot) definiert hast. In diesem Fall musst Du die Variablen $PubDirUrl und $Uploads Url Fmt in config.php so setzen, dass sie auf die richtigen URLs für deine Verzeichnisse pub/ und uploads/ verweisen.


Added by heck@fas.harvard.edu: Using Apache 2.0.x, I also needed to alias the pub directory. The link tags that load the style sheets will now point at e.g. http://example.com/wiki/pub/css/stdlayout.css, but that is aliased to /home/account/www/pmwiki.php/pub/css/stdlayout.css, which makes no sense. The solution is to add another alias:
        Alias /wiki/pub /home/account/www/pub
Note that you can put these directories anywhere: They do not have to be under your DocumentRoot.
NOTE (added be tj-AT-web62.com): Tis did not work for me, don´t know why. If I did it like above, the second Alias just triggered a request to the wiki error message
‘pub/skins/pmwiki/pmwiki.css’ is not a valid PmWiki page name
I had to add an
        Alias /pub /home/account/www/pub
to get it work right!

It seems that all steps described below only make sense, if in the configuration file of the webserver “AllowOverride None” not is set. All user specific directives are forbidden this way. So what then?? (fhattop@yahoo.de)

Das Verwenden eines “wiki”-Skriptes

Wenn Du keinen Zugang zur Konfigurationsdatei des Webservers hast, sind ein paar “Umleitungen” erforderlich. Als erstes solltest Du eine Datei (kein Verzeichnis) mit dem Namen “wiki” dort anlegen, wo der Webserver normalerweise auf die URL www.beispiel.de/wiki zugreift. Oft ist dies das DocumentRoot-Verzeichnis des Webservers, dies hängt aber von der Konfiguration Deines Webservers ab. Füge das folgende PHP-Skript in die Datei wiki ein:

    <?php chdir(“/pfad/zu/pmwikidir”); include(“pmwiki.php”); ?>

Ersetze in diesem Skript /pfad/zu/pmwikidir mit dem Namen des Verzeichnisses, das pmwiki.php enthält. Anschließend füge die folgenden Zeilen zu der Datei .htaccess im selben Verzeichnis, in dem auch die neue Datei wiki liegt hinzu. (Falls die Datei .htaccess noch nicht existiert, lege sie neu an.)

    
    <Files wiki>
    SetHandler application/x-httpd-php
    </Files>

Dies teilt dem Webserver mit, dass er die Datei wiki als ein PHP-Skript behandeln soll, auch wenn sie nicht auf .php endet. Nun führen Anfragen an die Datei wiki dazu, dass der Webserver in das Verzeichnis, das pmwiki.php enthält, wechselt, und dieses Skript von dort ausführt. Du solltest sicherstellen, dass $ScriptUrl in config.php auf die Datei wiki verweist und nicht auf das Verzeichnis, das pmwiki.php enthält.

Umbenennen der Datei pmwiki.php

Eine dritte Methode ist es, einfach das Skript pmwiki.php entsprechend den eigenen Anforderungen umzubennen, beispielsweise zu do.php. Wenn Du den Web-Log-Analyzer http://www.mrunix.net/webalizer/ webalizer verwenden willst, solltest Du pmwiki.php nicht in index.php umbenennen. Webalizer kürzt URLs, indem er alles hinter dem ‘index.’-Teil entfernt. Damit werden im Ergebnis alle Verweise auf einzelne Seiten zerstört. Beispielsweise werden sowohl der Zugriff auf index.php/Main/Abc’ als auch auf ‘/index.php/Main/Xyz’ als Zugriff auf gezählt.

Wenn Du willst, das PmWiki automatisch gestartet wird, wenn eine in einem Verzeichnis endende URL eingegeben wird, kannst Du eine der folgenden beiden Möglichkeiten nutzen: Wenn Du eine Alias-Direktive in die Konfigurationsdatei Deines Webservers einfügen kannst, benutze einfach die oben beschriebene Alias-Direktive. Wenn Du keinen Zugriff auf die Konfigurationsdatei hast, versuche folgendes zur Datei .htaccess im PmWiki-Verzeichnis hinzuzufügen:

  DirectoryIndex pmwiki.php

Dies führt dazu, dass per Default anstelle von index.php oder index.html nun pmwiki.php geladen wird und verbirgt das pmwiki.php-Skript (zumindest für Besucher, die das erste Mal auf das Wiki zugreifen).

Verwenden von mod_rewrite

Der Webserver Apache hat alle möglichen verrückten Features, eines davon http://httpd.apache.org/docs/mod/mod_rewrite.html mod_rewrite. Der folgende Eintrag in eine Datei .htaccess sollte dazu führen, dass Deine URLs nett anzusehen sind:

    
    RewriteEngine on
    RewriteBase /
    RewriteRule ^([A-Z].*) /pfad/zu/pmwiki/pmwiki.php?pagename=$1 [L,qsappend]

Wenn Du mod_rewrite benutzt, solltest Du sicherstellen, dass Du die folgenden Einträge in local/config.php stehen hast:

    
    $ScriptUrl = 'http://www.beispiel.de/dir/pmwiki.php';
    $PageUrlFmt = 'http://www.beispiel.de/dir/$Group/$Title_';
    $PubDirUrl = 'http://www.beispiel.de/dir/pub';
    $UploadUrlFmt = 'http://www.beispiel.de/dir/uploads';

Sauberer URLs mit PmWiki erzeugen

Damit PmWiki selbst einfachere URLs erzeugt, musst Du Änderungen an Deiner lokalen Konfiguration vornehmen. Das Setzen der Variablen $EnablePathInfo auf den Wert 1 teilt PmWiki mit, Seitennamen mit Schrägstrichen ("/") anstelle von Punkten (".") sowie ohne die Zusätze wie "pagename=" etc. zu erzeugen. Wenn Du anschließend $Script Url so setzt, dass diese Variable auf den von Dir verwendeten Pseudo-Pfad (etwa "http://wiki.beispiel.de/") verweist, sehen die URLs schon besser aus. Beispielsweise führt das oben angegebene mod-rewrite-Kommando in Verbindung mit

    $ScriptUrl = "http://wiki.beispiel.de/";

in der Datei config.php zu einer URL, die wie folgt aussieht:

    http://wiki.beispiel.de/Main/HomePage/

« Schmutzwortliste | PmWiki.Documentation Index | CustomInterMaps »



This page may have a more recent version on pmwiki.org: PmWiki:ChangePmWikiURL, and a talk page: PmWiki:ChangePmWikiURL-Talk.