Frage Wie kann Apache2 zu einem Unterverzeichnis weitergeleitet werden?


Ich betreibe Apache2 auf Debian Etch mit mehreren virtuellen Hosts.

Ich möchte so umleiten http://git.example.com geht zu http://git.example.com/git/

Sollte wirklich einfach sein, aber Google schneidet es nicht ganz ab. Ich habe versucht, die Redirect und Rewrite Zeug und sie scheinen nicht ganz das zu tun, was ich will ...


57
2018-05-19 17:20


Ursprung


Es gibt viele Möglichkeiten, wie Sie damit umgehen können, aber was genau möchten Sie erreichen? - WerkkreW


Antworten:


Fühle mich ein bisschen albern - ein bisschen mehr Googeln ergab die Antwort, nach der ich suchte:

RedirectMatch ^/$ /git/

Grundsätzlich wird die Wurzel und nur die Wurzel umgeleitet.

Dieser Code könnte in einem .htaccess Datei (es gibt ein Tag dafür, also nehme ich an, dass das der ursprüngliche Anwendungsfall ist). Aber wenn Sie bearbeiten können, die Hauptserver Apache Config dann legen Sie es in den Abschnitt für Ihre Website wahrscheinlich in einem <VirtualHost> Sektion.

Das Dokumente für RedirectMatch sag, dass die Kontext kann "Serverkonfiguration, virtueller Host, Verzeichnis, .htaccess" sein.


103
2018-05-19 17:23



ok, wo also diese Codezeile? - user230910
Ich musste eine vollständige URI (https://example.com/git/) Damit dies funktioniert. Seltsam. - Mat M


Du hast die richtige Antwort dort mit der Weiterleitung. Sie müssen vorsichtig sein, wenn Sie alles an einen anderen Ort weiterleiten, da Sie dort rekursive Weiterleitungen erhalten können. Dies geschieht, wenn Sie eine Wartungsseite einrichten möchten.


3
2018-06-11 15:59



Tatsächlich. Redirect / /git/ ergibt rekursives Feuerwerk. - Davor Josipovic


Sie können die Redirect-Direktive verwenden.

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

3
2017-09-25 18:57





Die akzeptierte Antwort löste mein Problem, aber ich fand auch, dass ich eine 404-Weiterleitung für nicht existierende Seiten hinzufügen musste - meine Situation ist, dass eine OwnCloud-Installation eine Ebene tiefer als root (https://example.com/owncloud).

Dies funktionierte für mich, um alles an mein Unterverzeichnis zu senden:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php

0
2017-09-11 21:29



ErrorDocument sollte eine Fehlerseite zurückgeben, kein nützliches Dokument. Dies ist wichtig für Crawler. - Jonah Benton