8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

après avoir écumé pas mal de posts sur le sujet, j'aurais besoin d'un p'tit coup de main pour un problème de redirection dans le htaccess.

Tout d'abord, voici l'architecture :
1. Je suis chez OVH pour mon nom de domaine, et avec un hébergement mutualisé
2. J'ai déclaré via l'interface OVH, un sous-domaine media menant à www/media/
3. J'utilise actuellement le htaccess pour rediriger les requêtes de type monsite.com vers www.monsite.com, ainsi que pour d'autres réécritures d'URL (mais qui n'ont pas d'incidence dans mon souci)

Le code que j'utilise actuellement dans mon htaccess pour le point 3 est le suivant :
RewriteCond %{HTTP_HOST} !^www\.[^.]+\.[^.]+$
RewriteRule ^(.*)  http://www\.%{HTTP_HOST}/$1        [QSA,L,R=301]


Lors d'une requête de type http://media.oreros-online.com/blog/bose1-53f6d86d36ba6.png, la réécriture renvoie l'URL suivante http://www.media.oreros-online.com/media/blog/bose1-53f6d86d36ba6.png

J'ai tenté pas mal de trucs, et en mettant le domaine en dur, j'arrive à conditionner le fait qu'il ajoute www uniquement dans le cas où aucun sous-domaine n'est précisé. Mais ce n'est pas très pro...
Le premier problème consiste donc à conditionner sans avoir besoin de mettre le domaine en dur l'ajout du www.
Le second problème, c'est que je souhaiterais que lors de l'appel à une URL du sous-domaine, on ne visualise pas dans l'URL réécrite le répertoire lié au sous-domaine.

Exemple, pour un appel à http://media.oreros-online.com/blog/bose1-53f6d86d36ba6.png, l'idée c'est que la réécriture n'ajoute pas le www en préfixe, qu'il n'ajoute pas media après le nom de domaine, et qu'il conduise vers le fichier /www/media/blog/bose1-53f6d86d36ba6.png

Par contre, pour un appel à http://oreros-online.com/, l'URL doit être réécrite pour indiquer http://www.oreros-online.com/

Je tourne depuis plusieurs heures sur ce problème sans parvenir à y trouver une solution. Aussi, toute aide sera la bienvenue Smiley biggrin

En vous remerciant pas avance Smiley cligne
Salut,

désolé pas trop le temps, à voir si j'ai bien compris ta demande, mais test ça:


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

RewriteCond %{HTTP_HOST} ^([^\.]+).oreros-online.com$ [NC]
RewriteRule ^(.*)$ /www/%1/$1 [L]

Bon courage Smiley smile
Merci Floreo, je vais tester ça tout de suite Smiley cligne

Dans l'idée, je pense que ça va le faire.

Aurais-tu la même chose sans le nom de domaine en dur ?

Merci Smiley smile
Hmm tu peux tester ça:


RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+\.[a-z]{2,})$ [NC]
RewriteRule ^(.*)$   http://www.%1/$1   [L,R=301]

RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+).([^\.]+\.[a-z]{2,})$ [NC]
RewriteRule ^(.*)$ www/%1/$1 [L]


Cela me semble fonctionnel (pour ton cas), mais est-ce plus lisible? Smiley lol
Merci de ta réponse rapide Smiley smile

Pour la redirection www, c'est nickel !

Par contre, dès lors que j'appelle une url en http://media.oreros-online.com/, je tombe sur une erreur 500.

Du coup, j'ai commenté le second bloc, et ça marche exactement comme j'ai besoin :
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+).([^\.]+\.[a-z]{2,})$ [NC]
RewriteRule ^(.*)$ www/%1/$1 [L]


Je te remercie beaucoup de ton aide ! Smiley biggrin