Як змусити Apache2 перенаправлятись у підкаталог


66

Я запускаю apache2 на Debian etch з кількома віртуальними хостами.

Я хочу перенаправити так, щоб це http://git.example.comперейшло доhttp://git.example.com/git/

Це повинно бути дуже просто, але Google не дуже скорочує це. Я спробував речі з перенаправленням і перезаписом, і вони, здається, не роблять те, що я хочу ...


Є багато способів, як можна було б підійти до цього, але що саме ви намагаєтеся досягти?
WerkkreW

Відповіді:


111

Відчуйте себе трохи нерозумно - трохи більше гугл з'явився відповідь, яку я мав після:

RedirectMatch ^/$ /git/

В основному перенаправлення кореня, і тільки корінь.

Цей код можна зробити у .htaccessфайлі (для цього є тег, тому я припускаю, що це оригінальний випадок використання). Але якщо ви можете відредагувати, головний сервер apache config потім помістить його в розділ для вашого веб-сайту, ймовірно, всередині <VirtualHost>розділу.

У документах для RedirectMatch сказати , що контекст може бути «конфігурація сервера, віртуальний хост, каталог, .htaccess».


2
ОК, тож куди поставити цей рядок коду?
user230910

Мені довелося поставити повний URI ( https://example.com/git/), щоб це працювало. Дивно.
мат М

3

Ви отримали правильну відповідь там за допомогою переадресації. Ви повинні бути обережними, перенаправляючи все кудись ще, оскільки там ви можете отримати рекурсивні переадресації. Це відбувається, якщо ви хочете створити сторінку обслуговування.


4
Справді. Redirect / /git/призводить до рекурсивного феєрверку.
Давор Йосипович

3

Ви можете використовувати директиву про переадресацію.

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

0

Прийнята відповідь вирішила мою проблему, але я також виявив, що мені довелося додати перенаправлення 404 для неіснуючих сторінок - моя ситуація полягає в тому, що установка OwnCloud розташована на один рівень нижче кореня ( https://example.com/owncloud ) .

Це працювало для мене, щоб надсилати все до мого підкаталогу:

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

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

2
ErrorDocument повинен повернути сторінку помилки, а не корисний документ. Це важливо для сканерів.
Jonah Benton
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.