Como fazer o Apache2 redirecionar para um subdiretório

66

Estou executando o apache2 no Debian etch, com vários hosts virtuais.

Eu quero redirecionar para que http://git.example.comvá parahttp://git.example.com/git/

Deve ser realmente simples, mas o Google não está cortando isso. Eu tentei o material de redirecionamento e reescrita e eles não parecem fazer o que eu quero ...

Hamish Downer
fonte
Existem várias maneiras de abordar isso, mas o que é exatamente o que você está tentando realizar?
WerkkreW

Respostas:

111

Sinto-me um pouco bobo - um pouco mais pesquisando no Google apareceu a resposta que eu estava procurando:

RedirectMatch ^/$ /git/

Basicamente, redirecionando a raiz, e somente a raiz.

Esse código pode funcionar em um .htaccessarquivo (existe uma tag para isso, portanto, presumo que seja o caso de uso original). Mas se você pode editar, o servidor principal apache config coloca-o na seção do seu site provavelmente dentro de uma <VirtualHost>seção.

Os documentos do RedirectMatch dizem que o contexto pode ser "configuração do servidor, host virtual, diretório, .htaccess".

Hamish Downer
fonte
2
ok, então onde colocar essa linha de código?
precisa saber é o seguinte
Eu tive que colocar um URI completo ( https://example.com/git/) para que isso funcionasse. Estranho.
esteira M
3

Você tem a resposta correta lá com o redirecionamento. Você precisa ter cuidado ao redirecionar tudo para outro lugar, pois é possível obter redirecionamentos recursivos lá. Isso acontece se você deseja colocar uma página de manutenção.

Rory
fonte
4
De fato. Redirect / /git/resulta em fogos de artifício recursivos.
Davor Josipovic
3

Você pode usar a diretiva Redirecionar.

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

fonte
0

A resposta aceita resolveu meu problema, mas também achei necessário adicionar um redirecionamento 404 para páginas inexistentes - minha situação é que a instalação do OwnCloud está localizada um nível abaixo da raiz ( https://example.com/owncloud ) .

Isso funcionou para mim, para enviar tudo para o meu subdiretório:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
J4yne
fonte
2
ErrorDocument deve retornar uma página de erro, não um documento útil. Isso é importante para os rastreadores.
Jonah Benton