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 ...


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.


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.


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>

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

2
ErrorDocument sollte eine Fehlerseite zurückgeben, kein nützliches Dokument. Dies ist wichtig für Crawler.
Jonah Benton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.