268 votes

.htaccess rewrite pour rediriger l'URL racine vers un sous-répertoire

J'essaie d'obtenir

www.example.com

pour aller directement à

www.example.com/store

J'ai essayé plusieurs bouts de code et aucun ne fonctionne. Je vous en prie, aidez-moi !

Ce que j'ai essayé :

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

Qu'est-ce que je fais de mal ?

298voto

Vous pouvez utiliser une règle de réécriture qui utilise ^$ pour représenter la racine et le réécrire dans votre répertoire /store, comme ceci :

RewriteEngine On
RewriteRule ^$ /store [L]

177voto

Dio Phung Points 521

J'ai été surpris que personne ne l'ait mentionné :

RedirectMatch ^/$ /store/

En fait, il redirige la racine et seulement l'URL racine. La réponse vient d'ici :

http://serverfault.com/questions/9992/how-to-get-apache2-to-redirect-to-a-subdirectory

116voto

Gumbo Points 279147

Essayez ça :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]

Si vous souhaitez une redirection externe, définissez l'option R drapeau là aussi :

RewriteRule ^$ /store [L,R=301]

81voto

Jage Points 4889

Voici ce que j'ai utilisé pour rediriger vers un sous-répertoire. Cela s'est fait de manière invisible et permet toujours de traiter les requêtes qui correspondent à un fichier existant ou autre.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]

Remplacez site.com et subdir par vos valeurs.

25voto

user1121352 Points 1066

Une autre alternative si vous voulez réécrire l'URL et cacher l'URL original :

RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]

Ainsi, si vous tapez par exemple http://www.example.com/product.php?id=4 il ouvrira de manière transparente le fichier à http://www.example.com/store/product.php?id=4 mais sans montrer à l'utilisateur l'url complète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X