Short-URL für Mediawiki
Martin Balser
- webserver
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
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!
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
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!
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
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!
Im Apache-error.log sollte stehen, warum ein Zugriff nicht geklappt hat. Wie
man Zugriffsrechte im Apache korrigiert ist zum Beispiel hier erklaert:
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