web-dev-qa-db-fra.com

Comment faire pour rediriger Apache2 vers un sous-répertoire

J'utilise Apache2 sur Debian etch, avec plusieurs hôtes virtuels.

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

Cela devrait être vraiment simple, mais Google ne le coupe pas tout à fait. J'ai essayé les trucs de redirection et de réécriture et ils ne semblent pas vraiment faire ce que je veux ...

70
Hamish Downer

Sentez-vous un peu stupide - un peu plus de recherche sur Google a révélé la réponse que je recherchais:

RedirectMatch ^/$ /git/

Redirige essentiellement la racine, et uniquement la racine.

Ce code pourrait faire dans un .htaccess fichier (il y a une balise pour cela, donc je suppose que c'est le cas d'utilisation d'origine). Mais si vous pouvez le modifier, la configuration du serveur principal Apache le met ensuite dans la section de votre site Web probablement à l'intérieur d'un <VirtualHost> section.

Les documents pour RedirectMatch disent que les context peuvent être "configuration serveur, hôte virtuel, répertoire, .htaccess".

115
Hamish Downer

Vous avez la bonne réponse avec la redirection. Vous devez être prudent lorsque vous redirigez tout vers un autre endroit, car vous pouvez y obtenir des redirections récursives. Cela se produit si vous souhaitez mettre en place une page de maintenance.

3
Rory

Vous pouvez utiliser la directive Redirect.

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

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 - ma situation est celle d'une installation OwnCloud située à un niveau sous la racine ( https: // exemple. 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
0
J4yne