.htaccess – Redirection vers un sous-dossier

Voici comment faire pour rediriger les requêtes du dossier principal d’un site web vers un sous-dossier :

# Activons le "RewriteEngine" pour pouvoir 
# utiliser les "RewriteRule" et "RewriteCond"
RewriteEngine on

# Ensuite, vérifions que nous sommes bien sur 
# mathieupeloquin.com ou www.mathieupeloquin.com
# et dans le sous-dossier voulu.
RewriteCond %{HTTP_HOST} ^(www.)?mathieupeloquin.com$
RewriteCond %{REQUEST_URI} !^/sous-dossier/

# Vérifions si la personne a tapé le nom d'un
# fichier ou dossier existant (dans ce cas, nous
# ne voulons pas ré-écrire la requête...)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Maintenant que toutes les conditions ont été
# rencontrées, on redirige vers le bon sous-dossier
RewriteRule ^(.*)$ /sous-dossier/$1

# Finalement, on vérifie si la personne n'a seulement
# tapé que le nom de domaine (avec ou sans www) sans
# rien mettre après la barre oblique (/). Si oui, on redirige
# vers le bon sous-dossier, sur le fichier principal...
# (notez que le fichier pourrait être autre chose, tel que
# index.php, autrefichier.html, quelquechose.php...)
RewriteCond %{HTTP_HOST} ^(www.)?mathieupeloquin.com$
RewriteRule ^(/)?$ sous-dossier/index.html [L]

Il faut simplement mettre ce code (vous pouvez inclure les lignes débutant par # puisque ce sont des commentaires qui ne seront pas traités par Apache).

Be Sociable, Share!

18 réflexions sur « .htaccess – Redirection vers un sous-dossier »

  1. Arnaud

    bonjour Matt, j’ai testé mais sans succès pour forcer l’ouverture en mode SSL et avec les http://www...

    j’utilise un htaccess suivant:
    _________________________________________________
    Options +FollowSymLinks +ExecCGI

    # mode SSL serveur
    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]

    # we check if the .html version is here (caching)
    RewriteRule ^$ index.html [QSA]
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f

    # no, so we redirect to our front web controller
    RewriteRule ^(.*)$ index.php [QSA,L]

    _________________________________________________

    Bref cela ne me dérange pas trop au fond mais sans les WWW il y a un message de sécurité de IE ou mozilla qui oblige à configurer la reconnaissance du certificat…

    Merci pour votre réponse précédente.

    Arnaud 😛

  2. Matt Auteur de l’article

    Il y a deux choses à noter sur ce point :

    1. Il faut que le « RewriteRule » spécifie le « www.pspenergie.com » et non pas seulement « %{HTTP_HOST} » pour que le certificat soit pris en compte, sinon, vous devez avoir un certificat de type « Wildcard » qui fonctionnera autant avec et sans les « www ». Le « %{HTTP_HOST} » n’ajoutera pas le « www » à « pspenergie.com », ce qui entre en conflit avec le certificat…

    2. Si quelqu’un tape https://pspenergie.com/… Il n’y a absolument rien à faire puisque la négociation du https et l’échange du certificat s’effectue au niveau de la connexion au serveur Apache, avant l’exécution du .htaccess. Il n’y a aucune façon d’exécuter le .htaccess pour changer « pspenergie.com » pour « www.pspenergie.com » avant que le certificat ne soit activé sans quoi ce serait une faille de sécurité!

    J’espère que ceci peut éclairer une autre partie de votre problème et vous donner une piste de solution!

  3. Arnaud

    Merci Matt pour cette réponse.
    J’ai installer sur le site une page d’information dans le support et 2 liens directs vers les pages en https.
    Bref j’ai plus simple en attendant de reconfigurer mon hébergement…

  4. Isabelle

    merci infiniment : c’est expliqué clairement et ça marche. Que de temps gagné grâce à vous 😀

  5. Fontaine

    Encore un fois MERCI pour ce code clair et bien documenté. C’est grâce à des personne comme vous que je me couche chaque jour un peu moins C.. 😛

  6. Tony

    Merci pour ce code, il est complet et les commentaires permettent vraiment de comprendre (il faut l’avouer, les commentaires de qualités dans le .htaccess sont rares en général). Merci pour le partage.

  7. camille jolicoeur

    Merci infiniment pour ce bout de code merveilleux.

    J’héberge deux sites différents: un de généalogie sous phpgedview, kamil-concept.ca
    et un blog wordpress kamil-concept.com/blogf/

    Votre bout de htaccess a complètement réglé mon problème pour que le nom de mon premier
    domaine seul se redirige sur mon blog.

    Encore une fois mille mercis

  8. Corinne

    Merci beaucoup pour cet article. Cela m’a permis d’optimiser mon fichier .htaccess et de régler également un problème de panier de mon site ecommerce qui se vidait tout seul du à un soucis de cache.

  9. Maëva

    Merci beaucoup !
    Après l’essai-échec d’une autre solution cette démarche aura sauvé notre journée !!!

    Donc toujours fonctionnel en 2016. 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *