Retirer le www de l'url - récupérer le sous domaine

Nouveau WRInaute
bonjour voici mes règles de rewriting ( dans la conf de mon vhost).

Code:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$ index.php/
RewriteRule (.*) - [E=ID:%{HTTP_HOST}]


C'est la dernière ligne qui me pose problème, j'aimerais que lorsque l'url commence par www. , que ce www. ne soit pas prise en comte dans ma variable ID.

example: www.domain.com --> domain.com que www.toto.domain.com --> toto.domain.com dans ma variable ID.

je n'ai pas trouvé de réponse ailleurs donc je suis venu poster sur ce forum.

Merci d'avance.

P.S: j'ai un ServerAlias *.domain.com
 
WRInaute accro
interressant ce flag E !! il permet de conserver des decoupages de chaine, mais je ne l'ai jamais utiliser de mon coté....

donc c'est juste une proposition qui me parait logique:

Code:
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$  index.php/$1 [E=ID:%1]
 
WRInaute passionné
Et si tu mets les deux lignes citées en premier ca doit faire l'affaire. cette règle redirige si l'url est appelé avec www. et la règle que tu as cité fait ce que tu veux.
 
WRInaute accro
oui mais l'ID contiendra le -www
[E=ID:%{HTTP_HOST}]

et il le veut sans..;
ce qui n'arrange pas la difficulté du problème ^^

'env|E=VAR:VAL' (définir unevariable d'environnement)
Force la définition d'une variable d'environnement VAR à la valeur VAL. VAL peut être exprimée par une expression contenant des rétroréférences $N et %N qui seront substituées à l'initialisation de la variable. Vouspouvez utiliser ce commutateur plusieurs fois pour définir plusieurs variables en même temps. Ces variables pourront être par la suite réutilisées dans de nombreuses situations, dont les plus courantes sont à l'intérieur d'un traitement XSSI (via la commande <!--#echo var="VAR"-->) ou d'un CGI (ex. $ENV{'VAR'}). Vous pourrez aussi l'atteindre dans un motif de RewriteCond ultérieur via l'écriture %{ENV:VAR}. Vous pouvez utilsier cette fonctionnalité lorsque vous souhaitez enlever des portions d'URLs, tout en mémorisant les morceaux enlevés.
 
Nouveau WRInaute
Merci pour vos réponses.
Code:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$ index.php/
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$  index.php/$1 [E=ID:%1]

J'ai une erreur 500, quand mon url commence par www, et ID n'arrive pas à prendre la valeur de l'url.

T'as l'url de la pge d'où viens ta citation, KOogar ?
 
WRInaute passionné
ce que je disais c'était pour éviter le duplicate content. une première redirection enlève le www. et le reste est inchangé :
Code:
RewriteEngine On
RewriteBase /
# redirection pour enlever le www.
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$   http://%1/$1  [QSA,L,R=301]
# HTTP_HOST sans www.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$ index.php/
RewriteRule (.*) - [E=ID:%{HTTP_HOST}]
 
Nouveau WRInaute
Ça fonctionne!!

Merci à vous deux webmasterlamogere et KOogar !!
( c'était tout simple et je cherchais compliqué)
 
WRInaute accro
Great!! c'est webmasterlamogere qui a assuré sur ce problème.. et qui assure de plus en plus en rewrite au passage :D
 
WRInaute accro
:oops: je me sens géner

je ne sais pas toi, mais j'aurais appris avec ce post a acceder au tableau des globals et pouvoir le modifier. Mais il reste des points sombres :

peut-on renvoyer la valeur d'une capture ?
[E=ID:$1]
ou
[E=ID:%1]

peut-on renvoyer une valeur définie ?
[E=ID]

Ou doit-on forcement passer une globale ou bilamba78 confirme que cela marche trés bien:
[E=ID:%{HTTP_HOST}]
 
WRInaute passionné
J'ai fait le test suivant :
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule (.*) - [E=VAR_TEST:%1...$1]
et j'ai seulement la variable $_SERVER["REDIRECT_VAR_TEST"] qui a la valeur attendue : "mondomaine.fr...test.php". la variable $_SERVER["VAR_TEST"] n'existe pas!
 
Nouveau WRInaute
KOogar a dit:
Ou doit-on forcement passer une globale ou bilamba78 confirme que cela marche très bien:
[E=ID:%{HTTP_HOST}]

Ben en faite comme ça, ça fonctionne très bien, car il reprend l'url après la redirection ;)
 
Nouveau WRInaute
Récuperer juste le sous domaine.

Code:
RewriteEngine On
RewriteBase /
# redirection pour enlever le www.
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$   http://%1/$1  [QSA,L,R=301]
# HTTP_HOST sans www.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$ index.php/
RewriteRule (.*) - [E=ID:%{HTTP_HOST}]

J'aimerais récupérer dans ID, le sous domaine; ex http://toto.domaine.com la valeur de ID serais alors toto, et non toto.domain.com comme le fait E=ID:%{HTTP_HOST} .

Merci d'avance pour votre aide.
 
WRInaute impliqué
Essaie de remplacer la derniere regle par:

Code:
RewriteCond %{HTTP_HOST} ^(.*)\.monsite\.com$ 
RewriteRule (.*) - [E=ID:%1]

en supposant que ton site est monsite.com ...
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut