So leiten Sie Apache2 in ein Unterverzeichnis um

66

Ich führe Apache2 auf Debian Etch mit mehreren virtuellen Hosts aus.

Ich möchte umleiten, damit das http://git.example.comgehthttp://git.example.com/git/

Sollte eigentlich ganz einfach sein, aber Google schneidet es nicht ganz. Ich habe Redirect und Rewrite ausprobiert und sie scheinen nicht ganz das zu tun, was ich will ...

Hamish Downer
quelle
Es gibt viele Möglichkeiten, wie Sie sich dem nähern können, aber was genau möchten Sie erreichen?
WerkkreW

Antworten:

111

Fühle mich ein bisschen albern - ein bisschen mehr googeln hat die Antwort ergeben, nach der ich gesucht habe:

RedirectMatch ^/$ /git/

Grundsätzlich die Wurzel umleiten, und nur die Wurzel.

Dieser Code kann in einer .htaccessDatei verwendet werden (es gibt ein Tag dafür, ich gehe also davon aus, dass dies der ursprüngliche Anwendungsfall ist). Wenn Sie jedoch bearbeiten können, wird die Apache-Konfiguration des Hauptservers in den Abschnitt für Ihre Website eingefügt, wahrscheinlich in einen <VirtualHost>Abschnitt.

In den Dokumenten für RedirectMatch wird angegeben , dass der Kontext "Serverkonfiguration, virtueller Host, Verzeichnis, .htaccess" sein kann.

Hamish Downer
quelle
2
ok, wo soll diese Codezeile stehen?
user230910
Ich musste einen vollständigen URI ( https://example.com/git/) eingeben, damit dies funktioniert. Seltsam.
Mat M
3

Dort haben Sie mit der Umleitung die richtige Antwort. Sie müssen vorsichtig sein, wenn Sie alles an einen anderen Ort umleiten, da Sie dort rekursive Umleitungen erhalten können. Dies geschieht, wenn Sie eine Wartungsseite einrichten möchten.

Rory
quelle
4
Tatsächlich. Redirect / /git/führt zu rekursiven Feuerwerken.
Davor Josipovic
3

Sie können die Redirect-Direktive verwenden.

<Directory />
   Redirect permanent / http://git.example.com/git/
   ...
</Directory>

quelle
0

Die akzeptierte Antwort löste mein Problem, aber ich stellte auch fest, dass ich eine 404-Umleitung für nicht vorhandene Seiten hinzufügen musste. In meiner Situation befindet sich eine OwnCloud-Installation eine Ebene unter dem Stammverzeichnis ( https://example.com/owncloud ). .

Das hat bei mir geklappt, um alles in mein Unterverzeichnis zu senden:

# redirect from root to subdirectory
RedirectMatch ^/$ /thesubdirectory/

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
J4yne
quelle
2
ErrorDocument sollte eine Fehlerseite zurückgeben, kein nützliches Dokument. Dies ist wichtig für Crawler.
Jonah Benton