Jak zmusić Apache2 do przekierowania do podkatalogu

66

Używam apache2 na platformie Debian etch, z wieloma wirtualnymi hostami.

Chcę przekierować, aby http://git.example.comprzejść dohttp://git.example.com/git/

Powinno to być naprawdę proste, ale Google nie całkiem go wycina. Próbowałem przekierować i przepisać rzeczy, które wydają się nie robić tego, co chcę ...

Hamish Downer
źródło
Można podejść do tego na wiele sposobów, ale co dokładnie starasz się osiągnąć?
WerkkreW

Odpowiedzi:

111

Poczuj się trochę głupio - trochę więcej googlingów znalazło odpowiedź, której szukałem:

RedirectMatch ^/$ /git/

Zasadniczo przekierowanie katalogu głównego i tylko katalogu głównego.

Ten kod może zrobić w .htaccesspliku (jest do tego znacznik, więc zakładam, że jest to oryginalny przypadek użycia). Ale jeśli możesz edytować, konfiguracja głównego serwera Apache, a następnie umieść ją w sekcji witryny sieci Web prawdopodobnie w <VirtualHost>sekcji.

Dokumenty dla RedirectMatch mówią, że kontekstem może być „konfiguracja serwera, wirtualny host, katalog, .htaccess”.

Hamish Downer
źródło
2
ok, więc gdzie umieścić ten wiersz kodu?
user230910
Musiałem podać pełny identyfikator URI ( https://example.com/git/), aby to zadziałało. Dziwne.
Mat M
3

Masz tam prawidłową odpowiedź z przekierowaniem. Musisz być ostrożny przy przekierowywaniu wszystkiego w inne miejsce, ponieważ możesz tam uzyskać przekierowania rekurencyjne. Dzieje się tak, jeśli chcesz założyć stronę konserwacji.

Rory
źródło
4
W rzeczy samej. Redirect / /git/powoduje rekurencyjne fajerwerki.
Davor Josipovic
3

Możesz użyć dyrektywy Przekierowanie.

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

źródło
0

Przyjęta odpowiedź rozwiązała mój problem, ale stwierdziłem również, że muszę dodać przekierowanie 404 dla nieistniejących stron - moja sytuacja polega na tym, że instalacja OwnCloud znajduje się jeden poziom poniżej katalogu głównego ( https://example.com/owncloud ) .

To działało dla mnie, aby wysłać wszystko do mojego podkatalogu:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
J4yne
źródło
2
ErrorDocument powinien zwrócić stronę błędu, a nie przydatny dokument. Jest to ważne dla robotów.
Jonah Benton,