Redirection des folders de sous-domain rewrités

WRInaute discret
Salut !

Petit défit aujourd'hui... ^^ Je suis en train de mettre en place un systéme de sous domaines pour les blogs situés sur mon site. Jusqu'a présent tout fonctionne bien, avec la régle suivante :

Code:
RewriteCond %{HTTP_HOST} !^www\.monsite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.monsite\.com$ [NC]
RewriteRule ^(.*) weblog.php?nom=%1 [NC,L]

Cela permet donc une redirection de nomdublog.monsite.com vers weblog.php?nom=nomdublog.

Il reste cependant maintenant un problème, c'est que les contenu images situés sur les blogs ne suivent plus car ils font référence à l'adresse nomdublog.monsite.com .

Voici donc ma question :

Comment rediriger tout ce qui se trouve aprés nomdublog.monsite.com/*** vers monsite.com/***

Merci d'avance à ceux et celles qui pourront m'aider !

Lorris
 
WRInaute passionné
tu peux faire une redirection mais ca va prendre du temps pour rien.
Il vaut mieux mettre le bon lien directement dans tes pages.
 
WRInaute discret
J'ai finallement trouvé une solution en utilisant REQUEST_URI...
Code:
RewriteCond %{HTTP_HOST} !^www\.site\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %{REQUEST_URI} !^(/)$ [NC]
RewriteRule ^(.*) $1 [NC,L]

RewriteCond %{HTTP_HOST} !^www\.site\.com$ [NC]
RewriteCond %{REQUEST_URI} ^(/)$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteRule ^(.*) weblogs.php?name=%1 [NC,L]
 
WRInaute passionné
Si j'ai bien compris tu veux éviter de faire une réécriture pour tout ce qui est différent de la racine.

dans ce cas tu peux simplifier :
Code:
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteCond $1 !^$
RewriteRule ^(.*)$ - [L]

RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule .* weblogs.php?name=%1 [L]
 
WRInaute discret
Ah oui en effet... C'est pas mal plus simple comme ça. Merci ! J'ai encore beaucoup à découvrir sur les expressions régulières ! Est-ce que tu sais comment je pourrais faire pour que tout ce qui se termine par .php ou .html soit redirigé en 301 vers la racine? Je voudrais éviter les url du genre nomdublog.site.com/unepagedusite.php .

Merci encore pour ton aide !
 
WRInaute passionné
pour faire une redirection de tout ce qui se termine par html ou php vers la racine en supprimant les paramètres :
Code:
RewriteRule ^.*\.(html|php)$ /? [R=301,L]
 
WRInaute passionné
essaye :
Code:
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)\.(html|php)$ http://www.site.com/$1.$2 [R=301,L]
 
WRInaute discret
Ça fonctionne si je met ça avant les deux autres. Par contre maintenant cette condition la :
Code:
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule .* weblogs.php?name=%1 [L]

Ne fais plus une redirection transparente mais une 301... :s
 
WRInaute passionné
il faut certainement exclure weblogs.php de la règle :
Code:
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.site\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteCond $1.$2 !^weblogs\.php$
RewriteRule ^(.*)\.(html|php)$ http://www.site.com/$1.$2 [R=301,L]
 
WRInaute discret
J'ai de nouveau un ptit problème :mrgreen: .

La redirection fonctionne bien pour ce qui est des page étant à la racine subdomain.lesite.com/bob.jpg vers lesite.com/bob.jpg mais ça ne fonctionne pas pour les répertoires et autres qui n'ont pas le format **.** comme subdomain.lesite.com/unfolder/unautrefolder/bob.jpg ...

Des idées ? Merci :D
 
Discussions similaires
Haut