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 ...


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".


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.


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>

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

2
ErrorDocument devrait renvoyer une page d'erreur, pas un document utile. Ceci est important pour les robots d'exploration.
— Jonah Benton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.