Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

J'ai un petit problème de redirection que j'ai beaucoup de mal à comprendre :

J'ai un nom de domaine 'mon-domaine.com'.

J'ai créé un sous-doumaine 'sub'.

Finalement, au bout d'une semaine, mon 'client' ne trouvait plus à son goût l'adresse "http://sub.mon-domaine.com", j'ai donc mis en place une redirection.

De plus, nous souhaitons supprimer les 'www' des url.

Le tout marche presque bien : mon problème :

http://www.mon-domaine.com ==> http://mon-domaine.com OK

http://sub.mon-domaine.com ==> http://mon-domaine.com/sub/ OK

http://www.sub.mon-domaine.com ==> http://mon-domaine.com/sub/ OK

MAIS :

http://www.mon-domaine.com/sub/ ==> http://mon-domaine.com/ Ce qui ne me va pas du tout

Voici l'extrait de mon .htaccess :

# Rewrite www.domain.com to domain.com
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) http://%1/$1 [R,L]

# Rewrite sub to /sub
RewriteCond %{HTTP_HOST} ^sub\.mon-domaine\.com$
RewriteCond %{REQUEST_URI} ^($|/.*$)
RewriteRule ^.* http://mon-domaine.com/sub%1 [R=permanent,L]

'sub' est un répertoire à la racine.

Hebergé sur ovh plan

D'avance merci de votre éclairage.

Modifié par Seb2nim
Posté

J'essaierais ceci:

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

Jean-Luc

Posté
J'essaierais ceci:

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

Jean-Luc

Plutôt comme ceci, en mettant le flag [OR] en fin de la première condition, non ?

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

ou encore

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

Dan

Posté

Merci pour la rapidité de vos réponses mais je sépare bien le problème en deux parceque j'heberge plus que simplement ce sous-domaine :

1) Je veux que les url en 'www' soient redirigées sans 'www'. Pour tout ce site (tout ce domaine)

2) Pour mon vieux sous-domaine : je veux que les anciens liens (commencant par sub.mon-domaine.com) soient dirigés vers mon-domaine.com/sub/...

Je tenterai donc :

1)

# Rewrite any 'www' url to 'non-www'
RewriteCond %{HTTP_HOST} ^www\.(.*)[b]$[/b]
RewriteRule ^(.*) http://%1/$1 [[b]QSA[/b],L,R=301]

C'est à dire ce que j'ai posté auparavant plus :

'$' en fin de RewriteCond pour délimiter la fin de pattern. Je pense que l'erreur venait de là...

Cette RewriteCond devrait etre vraie pour toute url commencant par 'www.' je retrouverai le hostname (sans 'www.') ayant groupé sur '.*' et pourrai le ré-utiliser par "RewriteCond backreference" : %1.

La RewriteRule ^(.*) vers http://%1/$1 devrait donc m'amener à l'url sans 'www.', plus le reste (le '.*' de RewriteRule)

Je note le QSA sur la RewriteRule... Bien vu !

2)

# Rewrite 'sub.mon-domaine.com/*' to 'mon-domaine.com/sub/*'
RewriteCond %{HTTP_HOST} ^sub\.mon-domaine\.com$
RewriteCond %{REQUEST_URI} ^($|/.*$)
RewriteRule ^.* [url="http://mon-domaine.com/sub%1"]http://mon-domaine.com/sub%1[/url] [L,R=301]

Que je conserve tel quel... En définitive, la premiere règle de ré-ecriture (des 'www' en 'non-www') etant en [L], je ne peux rencontrer 2) que pour des url sans www... Si j'ai bien pigé

Pourriez-vous me confirmer que ma démarche est correcte ?

Euh, simplequestion mais il se trouve que j'ai vraiment un '-' dans mon nom de domaine je n'ai pas à l'escaper hein???

Autre chose :

Auparavant, j'avais déclaré au niveau de mon 'manager ovh' (outil d'admin chez OVH) que mon sous domaine était redirigé vers la racine de mon espace (physique quoi). Vu que maintenant, je souhaite que ce sous-domaine soit géré comme un 'répertoire', car il est physiquement placé dans un répertoire 'sub', je suis tenté de parametrer ce sous domaine pour qu'il pointe sur le repertoire phisique 'sub'.

Auquel cas : Dois-je ré-écrire un htaccess dans le repertoire 'sub' ou est-ce que le sous-répertoire 'sub' 'hérite' de toutes facons de celui du répertoire racine ? Il me semble qu'il en hérite... Vous en pensez quoi ?

Encore merci.

PS : J'ai cherché un peu mais sans succès alors si vous connaissez une sorte d'utilitaire à la mise au point de htaccess, je suis preneur : Meme une bonne vielle classe java en ligne de commande, ca me va... Ca doit bien exister non ?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...