Comment faire pour qu'Apache2 soit redirigé vers un sous-répertoire

66

J'utilise apache2 sur Debian Etch, avec plusieurs hôtes virtuels.

Je veux rediriger pour que http://git.example.compasse àhttp://git.example.com/git/

Cela devrait être très simple, mais Google ne le coupe pas tout à fait. J'ai essayé les trucs Redirect et Rewrite et ils ne semblent pas vraiment faire ce que je veux ...

Hamish Downer
la source
Vous pouvez aborder ce problème de nombreuses façons, mais que voulez-vous accomplir exactement?
mercredi

Réponses:

111

Je me sens un peu bête - un peu plus sur google, voici la réponse que je recherchais:

RedirectMatch ^/$ /git/

En gros, rediriger la racine et uniquement la racine.

Ce code pourrait faire dans un .htaccessfichier (il y a une balise pour cela, donc je suppose que c'est le cas d'utilisation d'origine). Mais si vous pouvez l'éditer, le serveur principal apache config puis placez-le dans la section de votre site Web, probablement à l'intérieur d'une <VirtualHost>section.

Les documents pour RedirectMatch indiquent que le contexte peut être "configuration du serveur, hôte virtuel, répertoire, .htaccess".

Hamish Downer
la source
2
ok, alors où mettre cette ligne de code?
user230910
Je devais mettre un URI complet ( https://example.com/git/) pour que cela fonctionne. Étrange.
Mat M
3

Vous avez la bonne réponse ici avec la redirection. Vous devez faire attention lorsque vous redirigez le tout vers un autre endroit, car vous pouvez y obtenir des redirections récursives. Cela se produit si vous souhaitez afficher une page de maintenance.

Rory
la source
4
En effet. Redirect / /git/entraîne des feux d’artifice récursifs.
Davor Josipovic
3

Vous pouvez utiliser la directive Redirect.

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

la source
0

La réponse acceptée a résolu mon problème, mais j'ai également constaté que je devais ajouter une redirection 404 pour les pages inexistantes. Dans ce cas, l'installation de OwnCloud est située à un niveau inférieur à la racine ( https://example.com/owncloud ). .

Cela a fonctionné pour moi, pour tout envoyer dans mon sous-répertoire:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
J4yne
la source
2
ErrorDocument devrait renvoyer une page d'erreur, pas un document utile. Ceci est important pour les robots d'exploration.
Jonah Benton