Cómo hacer que Apache2 redirija a un subdirectorio

66

Estoy ejecutando apache2 en Debian etch, con múltiples hosts virtuales.

Quiero redirigir para que http://git.example.comvaya ahttp://git.example.com/git/

Debería ser realmente simple, pero Google no lo está cortando. He intentado las cosas Redirigir y Reescribir y no parecen hacer lo que quiero ...

Hamish Downer
fuente
Hay muchas maneras de abordar esto, pero ¿qué es exactamente lo que está tratando de lograr?
WerkkreW

Respuestas:

111

Siéntete un poco tonto, un poco más de google apareció la respuesta que buscaba:

RedirectMatch ^/$ /git/

Básicamente redirigiendo la raíz, y solo la raíz.

Este código podría funcionar en un .htaccessarchivo (hay una etiqueta para esto, así que supongo que ese es el caso de uso original). Pero si puede editar, la configuración de Apache del servidor principal lo coloca en la sección de su sitio web probablemente dentro de una <VirtualHost>sección.

Los documentos para RedirectMatch dicen que el contexto puede ser "configuración del servidor, host virtual, directorio, .htaccess".

Hamish Downer
fuente
2
ok, entonces, ¿dónde poner esta línea de código?
user230910
Tuve que poner un URI completo ( https://example.com/git/) para que esto funcione. Extraño.
Mat M
3

Tienes la respuesta correcta allí con la redirección. Debe tener cuidado al redirigir todo a otro lugar, ya que puede obtener redireccionamientos recursivos allí. Esto sucede si desea colocar una página de mantenimiento.

Rory
fuente
44
En efecto. Redirect / /git/da como resultado fuegos artificiales recursivos.
Davor Josipovic
3

Puede usar la directiva Redirect.

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

fuente
0

La respuesta aceptada resolvió mi problema, pero también descubrí que tenía que agregar un redireccionamiento 404 para páginas no existentes; mi situación es que tengo una instalación OwnCloud ubicada un nivel por debajo de la raíz ( https://example.com/owncloud ) .

Esto funcionó para mí, enviar todo a mi subdirectorio:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
J4yne
fuente
2
ErrorDocument debería devolver una página de error, no un documento útil. Esto es importante para los rastreadores.
Jonah Benton