Martin Balser: Short-URL für Mediawiki

Hallo zusammmen,

ich versuche verzweifelt nach dieser Anleitung (http://tinyurl.com/688obh) meine Wiki-Installation auf kurze URLs umzustellen. Doch es will einfach nicht funktionieren.

Ich habe mein Wiki unter xampp in dem Ordner htdocs/mediawiki/ , die Startseite erscheint also mit der URL

http://localhost/mediawiki/index.php/Hauptseite

Ich möchte sie aber als

http://localhost/Martinswiki/Hauptseite

aufrufen und erscheinen lassen. Welche Einstellungen muß ich da nun vornehmen? Ich habe alles gemäß der Anleitung befolgt und zwischen den ca. 100 Versuchen auch immer brav den Apache neu gestartet. Nun weiß ich einfach nicht mehr weiter. Wer kann mir helfen?

Einen schönen Sonntag wünsche ich Euch schon mal
Marba

  1. hi!

    Ich habe mein Wiki unter xampp in dem Ordner htdocs/mediawiki/
    [...]
    Ich habe alles gemäß der Anleitung befolgt und zwischen den ca. 100
    Versuchen auch immer brav den Apache neu gestartet. Nun weiß ich einfach
    nicht mehr weiter. Wer kann mir helfen?

    1. First, make sure that MediaWiki is not in a directory under the Apache
         DocumentRoot (the DocumentRoot is usually something "htdocs"). This
         step ensures that you don't overlap articles and files.

    bye, Frank!

    --
    Never argue with an idiot. He will lower you to his level and then
    beat you with experience.
    1. Hallo Frank,

      Ich habe mein Wiki unter xampp in dem Ordner htdocs/mediawiki/
      [...]
      Ich habe alles gemäß der Anleitung befolgt und zwischen den ca. 100
      Versuchen auch immer brav den Apache neu gestartet. Nun weiß ich einfach
      nicht mehr weiter. Wer kann mir helfen?

      1. First, make sure that MediaWiki is not in a directory under the Apache
           DocumentRoot (the DocumentRoot is usually something "htdocs"). This
           step ensures that you don't overlap articles and files.

      Das hatte ich auch versucht (mediawiki-Ordner außerhalb von htdocs, aber das hatte ebenfalls nicht funktioniert. Ich bin mir aber auch gar nicht sicher, wie ich den Ordner in httpd.conf dann adressieren soll!? c:\xampp\mediawiki oder wie sonst? Wie adressiere ich das in den LocalSettings.php?

      Und noch eine grundsätzliche, ZWEITE Frage: Die Artikel werden ja mittels PHP erstellt und existieren nicht als physisches Objekt, können doch also ohnehin nicht im selben Ordner wie irgendetwas anderes sein, schon gar nicht files, denn die gibt es ja auch nicht, sondern nur das Data-File der MySQL-Datenbank. Aber selbst wenn nur die virtuellen "Files" (= Artikel) gemeint wären: Wie sollen sich diese überlappen können, sie werden doch immer verschieden adressiert? In den URLs kommen ja keine "/" vor. Und wieso sollte die Überlappung außerhalb des htdocs nicht passieren können, wenn die Files und Artikel in gleicher, relativer Position zueinander stehen?

      Ich glaube, die Auflösung dieser Fragen würde mein HTML/Apache/Server/Routing-Verständnis einen Riesenschritt weiterbringen. Ich wäre einer solchen geduldigen Hilfe mit mir Ahnungslosem superdankbar.

      Allerbeste Grüße
      Marba

      1. hi!

        Das hatte ich auch versucht (mediawiki-Ordner außerhalb von htdocs, aber
        das hatte ebenfalls nicht funktioniert. Ich bin mir aber auch gar nicht
        sicher, wie ich den Ordner in httpd.conf dann adressieren soll!? c:\xampp
        \mediawiki oder wie sonst? Wie adressiere ich das in den
        LocalSettings.php?

        Ich kann das auch nur schlussfolgern aus der Anleitung, die du in deinem
        ersten Posting verlinkt hast, weil ich das noch nicht gemacht habe.

        In LocalSettings.php werden offenbar die URLs auf deinem Server eingetragen,
        unter denen die benoetigten Dateien zu finden sind. Das heisst, wenn du dort
        zum Beispiel $wgScriptPath = "/w"; eintraegst, dann werden in den erstellten
        Seiten Skripte mit sowas wie /w/index.php?... verlinkt.

        Von der Apache-Konfiguration ist dann abhaengig, wo diese index.php
        tatsaechlich zu finden ist. Der Webserver bildet ja angefragte URLs auf
        irgendwelche Dateien auf deiner Festplatte ab. Im Normalfall wuerde Apache
        bei einer Anfrage nach /w/index.php dann im Verzeichnis $DocumentRoot/w/
        nach der Datei index.php suchen. Weil aber fuer diese URL ein Alias angelegt
        wurde (Alias /w/index.php /path/to/your/MediaWiki/installation/index.php),
        sucht er in Wirklichkeit in dem angegebenen Verzeichnis nach der Datei.

        Leider verraetst du auch nicht, was bei deinen Versuchen nicht funktioniert
        hat. Du solltest mal in den Apache-Logfiles nachschlagen, aus welchem Grund
        was nicht geklappt hat.

        Und noch eine grundsätzliche, ZWEITE Frage: Die Artikel werden ja
        mittels PHP erstellt und existieren nicht als physisches Objekt, können
        doch also ohnehin nicht im selben Ordner wie irgendetwas anderes sein,
        schon gar nicht files, denn die gibt es ja auch nicht, sondern nur das
        Data-File der MySQL-Datenbank. Aber selbst wenn nur die virtuellen
        "Files" (= Artikel) gemeint wären: Wie sollen sich diese überlappen
        können, sie werden doch immer verschieden adressiert?

        Damit sollen wohl Kollisionen bei der Abbildung von URL auf lokale Datei-
        strukturen verhindert werden. Angenommen in deinem /wiki-Verzeichnis liegt
        eine Datei script.php; zusaetzlich existiert ein Artikel namens script.php.
        Versucht nun jemand auf die URL /wiki/script.php zuzugreifen, dann ist nach
        obiger Anleitung der Zugriff mehrdeutig, weil einerseits die reale Datei
        script.php gemeint sein kann, andererseits auch der Artikel script.php
        (d.h. die Umleitung auf /w/index.php/script.php).

        bye, Frank!

        --
        Never argue with an idiot. He will lower you to his level and then
        beat you with experience.
        1. Hallo Frank,

          vielen vielen Dank für Deine eingehenden Erläuterungen. Das Problem scheint sich auf die Zugriffsrechte (403-Fehler) zu verdichten.

          Ich kann das auch nur schlussfolgern aus der Anleitung, die du in deinem
          ersten Posting verlinkt hast, weil ich das noch nicht gemacht habe.

          In LocalSettings.php werden offenbar die URLs auf deinem Server eingetragen,
          unter denen die benoetigten Dateien zu finden sind. Das heisst, wenn du dort
          zum Beispiel $wgScriptPath = "/w"; eintraegst, dann werden in den erstellten
          Seiten Skripte mit sowas wie /w/index.php?... verlinkt.

          Ja, das komische ist nur: Ein Ordner /w existiert bei mir genausowenig, wie bei in dem Beispielfall auf der Discussion-Seite (zu dem Link), dennoch wird dieser Ordnername ständig verwendet. Irgendwo hieß es, daß die Wikipedia diesen Ordner ebenfalls verwenden würde; da er nicht in der URL vorkommt, muß man annehmen, daß damit der reale, physische Ordner gemeint ist. Also habe ich überall dort, wo in den Beispielfällen von /w die Rede ist, meinen realen /mediawiki-Ordner angegeben - funzt dennoch nicht.

          Von der Apache-Konfiguration ist dann abhaengig, wo diese index.php
          tatsaechlich zu finden ist. Der Webserver bildet ja angefragte URLs auf
          irgendwelche Dateien auf deiner Festplatte ab. Im Normalfall wuerde Apache
          bei einer Anfrage nach /w/index.php dann im Verzeichnis $DocumentRoot/w/
          nach der Datei index.php suchen. Weil aber fuer diese URL ein Alias angelegt
          wurde (Alias /w/index.php /path/to/your/MediaWiki/installation/index.php),
          sucht er in Wirklichkeit in dem angegebenen Verzeichnis nach der Datei.

          Leider verraetst du auch nicht, was bei deinen Versuchen nicht funktioniert
          hat.

          Je nach Konfigurationsversuch heißt es 404 oder 403. Im 403-Fall frage ich mich, wie ich die Zugriffsrechte auf meiner heimischen Festplatte definieren soll!?

          Und noch eine grundsätzliche, ZWEITE Frage: Die Artikel werden ja
          mittels PHP erstellt und existieren nicht als physisches Objekt, können
          doch also ohnehin nicht im selben Ordner wie irgendetwas anderes sein,
          schon gar nicht files, denn die gibt es ja auch nicht, sondern nur das
          Data-File der MySQL-Datenbank. Aber selbst wenn nur die virtuellen
          "Files" (= Artikel) gemeint wären: Wie sollen sich diese überlappen
          können, sie werden doch immer verschieden adressiert?

          Damit sollen wohl Kollisionen bei der Abbildung von URL auf lokale Datei-
          strukturen verhindert werden. Angenommen in deinem /wiki-Verzeichnis liegt
          eine Datei script.php; zusaetzlich existiert ein Artikel namens script.php.
          Versucht nun jemand auf die URL /wiki/script.php zuzugreifen, dann ist nach
          obiger Anleitung der Zugriff mehrdeutig, weil einerseits die reale Datei
          script.php gemeint sein kann, andererseits auch der Artikel script.php
          (d.h. die Umleitung auf /w/index.php/script.php).

          Das klingt soweit plausibel, doch welche Ordner soll ich dann trennen, wenn es ja gar keinen Artikel-Ordner gibt? Bzw.: vor diesem Short-URL-Versuch hatte ich ja auch die vorgegebene Ordnerstruktur verwandt, und alles hat funktioniert, wieso können Kollisionen da nicht entstehen?

          Zusammengefaßt, was muß ich hier anpassen? Bei den folgenden Einstellungen erhalte ich eine 403, sowohl bei Aufruf von http://localhost/xyz/index.php/Hauptseite als auch von http://localhost/xyz/Hauptseite

          (C:/XAMPP/xyz/ als Wiki-Ordner und z. B. localhost/xyz/Hauptseite als Ausgabeordner)

          LocalSettings.php:
          $wgScriptPath       = "/mediawiki";
          $wgScriptExtension  = ".php";

          $wgScript           = "$wgScriptPath/index.php";
          $wgArticlePath      = "/xyz/$1";

          httpd.conf:
          Alias /xyz/index.php C:/XAMPP/mediawiki/index.php
          Alias /xyz C:/XAMPP/mediawiki/index.php
          Alias /xyz/ C:/XAMPP/mediawiki/
          Alias /index.php C:/XAMPP/mediawiki/index.php
          Alias /xyz/images/ /wiki/images/
          Alias /kyz/skins/ /wiki/skins/

          Nochmals allerbesten Dank und einen schönen Sonntagabend
          Marba

          1. hi!

            Das Problem scheint sich auf die Zugriffsrechte (403-Fehler) zu
            verdichten.

            Im Apache-error.log sollte stehen, warum ein Zugriff nicht geklappt hat. Wie
            man Zugriffsrechte im Apache korrigiert ist zum Beispiel hier erklaert:

            http://httpd.apache.org/docs/2.0/mod/mod_alias.html#alias

            bye, Frank!

            --
            Never argue with an idiot. He will lower you to his level and then
            beat you with experience.
            1. Im Apache-error.log sollte stehen, warum ein Zugriff nicht geklappt hat. Wie
              man Zugriffsrechte im Apache korrigiert ist zum Beispiel hier erklaert:

              http://httpd.apache.org/docs/2.0/mod/mod_alias.html#alias

              Okay, nu hattet jefunzt. Diese Erklärung fehlte in den zwei Varianten auf der Mediawiki-Manual-Seite völlig. Unfaßbar!

              Naja, auf jeden Fall besten Dank und einen guten Start in die Woche.

              Marba