simuler un sous domaine url rewritting

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

iometrine
Nouveau WRInaute
 
Messages: 5
Inscription: Jeu Nov 16, 2006 11:36

simuler un sous domaine url rewritting

Message le Jeu Nov 16, 2006 11:52

Bonjour,

Je souhaite faire une simulation de non de domaine mais ca ne marche pas chez moi.

le but est de faire

toto.example.com -> www.example.com/page.php?pseudo='toto'

pour ca je fait :
(-[a-z]*)
RewriteRule http://localhost/(-[a-zA-Z]*).example.com$
http://localhost/www.example.com/page.php?pseudo=$1 [L]

ou
RewriteRule ^(-[a-zA-Z]*).example.com$
www.example.com/page.php?pseudo=$1 [L]


merci d'avance!

Mitirapa
WRInaute accro
WRInaute accro
 
Messages: 1649
Inscription: Mer Juil 10, 2002 17:36

Message le Jeu Nov 16, 2006 12:01

j'ai eu besoin d'un truc similaire pour mes blogs et ce que j'ai fait est une autre facon de voir:

tous mes sous domaines vont dans un sous dossier de mon site
et mes pages dedans utilise une variable en php qui trouve le pseudo dans le domaine...


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5319
Inscription: Lun Juin 13, 2005 14:13

Message le Jeu Nov 16, 2006 12:45

Je suis pas sur qu'on puisse utiliser le rewriting pour simuler des sous domaines. de toute façon ça serait une horreur pour le référencement, un sous domaine étant considéré comme un site différent du principal pour les moteurs.

iometrine
Nouveau WRInaute
 
Messages: 5
Inscription: Jeu Nov 16, 2006 11:36

Message le Jeu Nov 16, 2006 14:01

merci pour vos reponses rapides

pour mitirapa,

oui mais tu doit surement crée un sous domaine par membre .
Mais moi je n'ai pas envie d'avoir d'adherence cote serveur.

Ce que je voulais juste savoir c'est a propos de ma regle .
RewriteRule http://localhost/(-[a-zA-Z]*).example.com$
http://localhost/www.example.com/page.php?pseudo=$1 [L]

ou
RewriteRule ^(-[a-zA-Z]*).example.com$
www.example.com/page.php?pseudo=$1 [L]

Est elle possible ?
si oui pourquoi n'est elle pas correct ?

Merci d'avance

Mitirapa
WRInaute accro
WRInaute accro
 
Messages: 1649
Inscription: Mer Juil 10, 2002 17:36

Message le Jeu Nov 16, 2006 14:50

iometrine a écrit:merci pour vos reponses rapides

pour mitirapa,

oui mais tu doit surement crée un sous domaine par membre .
Mais moi je n'ai pas envie d'avoir d'adherence cote serveur.

nan c'est des alias illimité... donc 2/3 lignes a mettre dans ton httpd puis basta

thepsy
Nouveau WRInaute
 
Messages: 4
Inscription: Jeu Nov 16, 2006 10:15

Message le Jeu Nov 16, 2006 17:13

Déja il faut ajouter l'entrée * dans ton dns, pour que tous les sous domaines pointent sur l'ip de ton serveur.
Ensuite les regles sont à mettre dans ton httpd.conf
Avec un truc du genre
RewriteMap lowercase int:tolower
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.exemple\.com$ [NC]
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.exemple\.com(.*) /var/www/users/$1$2 [L]

Ainsi tout sous domaine de la forme www.toto.exemple.com affichera le contenu du dossier var/www/users/toto

iometrine
Nouveau WRInaute
 
Messages: 5
Inscription: Jeu Nov 16, 2006 11:36

Message le Jeu Nov 16, 2006 21:43

merci thepsy,

mais je cherche a faire

toto.exemple.com var/www/users/page.php?id='toto'

alors j'ai essayé ce que tu m'as dit en le modifiant un peu mais sans succes:

RewriteRule ^([^.]+)\.exemple\.com(.*) /var/www/users/page.php?id=$1 [L]

mais ca marche pas,j'ai l'impression qu'il ne passe jamais dedans et qu'il cherche sur le serveur "toto.exemple.com" quoi qu'il en soit !!!!
c 'est quoi l'erreur ?
merci d'avance

thepsy
Nouveau WRInaute
 
Messages: 4
Inscription: Jeu Nov 16, 2006 10:15

Message le Ven Nov 17, 2006 0:36

Tu a bien ajouté l'entré * a ton dns?
Ou tu fais tes test en local?

dans tout les cas les regles doivent etre dans une section virtualhost de ton httpd.conf.
Dans ton cas

<VirtualHost tonip>
ServerName user.exemple.com #doit etre défini et different du nom du serveur principal
RewriteEngine on

RewriteMap lowercase int:tolower
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
RewriteCond %{HTTP_HOST} ^[^.]+\.exemple\.com$ [NC]
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.exemple\.com(.*) http://www.exemple.com/page.php?id=$1 [L]

</VirtualHost>

remplace juste tonip par l'ip de ton serveur et dis ce que ça donne

Parcontre les url du type http://toto.exemple.com/image.jpg ne pouront pas marcher directement puisque toutes les requettes seront redirigé sur l'url http://www.exemple.com/page.php?id=toto, tu devras adapter la regle

iometrine
Nouveau WRInaute
 
Messages: 5
Inscription: Jeu Nov 16, 2006 11:36

Message le Ven Nov 17, 2006 8:22

Désole,
car je ne t'avais pas dit que je fonctionnais en local, car je prépare un peu mon site en fonction de ca.

Alors pour info , je suis sous windows, en local et l'url exacte est :

http://localhost/toto.test.com/
===>
http://localhost/www.test.com/test.php?id=toto

et j'ai un vrai repertoire sur le disque "www.test.com" a la racine de www

par contre tu as mis ca :
<VirtualHost tonip>
ServerName user.exemple.com

mais je souhaite justement que ma regle remplace ca , car j'ai pas envie de creer ces lignes a chaque inscription de membres et d'avoir d'adhérence sur le serveur.

voila tu sais tout. merci d'avance. :)

thepsy
Nouveau WRInaute
 
Messages: 4
Inscription: Jeu Nov 16, 2006 10:15

Message le Ven Nov 17, 2006 10:31

Le "ServerName user.exemple.com" est obligatoire, car chaque virtual host doit avoir un servername, mais, dans ce cas, repondra à tout les sous domaines correspondant à la regle.

Tu es en local, et sous windows...
Ce que tu veux faire c'est des sous domaines, l'url http://localhost/toto.test.com/ n'est pas un sous domaine, mais un répertoire.

Si tu veux faire des tests, il va falloir ruser. En gros faire croire a windows que l’adresse toto.exemple.com corresponds a l’ip te ta machine.
Pour cela ouvre ton fichier C:\windows\system32\drivers\etc\hosts et rajoute les lignes suivantes
127.0.0.1 www.exemple.com
127.0.0.1 toto.exemple.com

Cela peut paraître complexe, mais c’est la façon la plus simple de tromper le dns de windows. Et ne t’inquiètes pas, sur ton serveur de prod l’entré dns * feras ça pour toi.

J’oubliais, tu dois aussi ajouter la condition suivante
RewriteCond %{HTTP_HOST} !^www.exemple\.com$ [NC]
Pour que le sous domaine www, ne soit pas traité en tant que user.
Ainsi que la ligne
NameVirtualHost 127.0.0.1
dans ton httpd.conf, pour indiquer à apache sur quel ip il doit gerer les virtualhost

Je viens de tester ça en local, tout fonctionne…

Apres, pour ce que tu veux faire, la solution que je te propose est peut-être une usine à gaz.
Si tu veux seulement afficher une page par sous domaine, la solution de Mitirapa est la plus adaptée.

iometrine
Nouveau WRInaute
 
Messages: 5
Inscription: Jeu Nov 16, 2006 11:36

Message le Ven Déc 15, 2006 19:21

merci beaucoup thepsy , et desole du retard car j'etais en vacances.

bon j'ai pas mal chercher et j'ai trouve la soluce

RewriteCond %{HTTP_HOST} !^www\.site\.fr$
RewriteCond %{HTTP_HOST} ^(.*)\.site\.fr$
RewriteRule ^/$ http://www.site.fr/page.php?id=%1 [P,L]

merci beaucoup a tous


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités