htaccess sous-domaine redirection

Discussion sur le mod rewrite d'Apache : .htaccess, utilisation, expériences... Réécriture d'URL (URL rewriting).

Modérateur: Modérateurs

htaccess sous-domaine redirection

Messagede natsou_k » Ven Mai 04, 2007 8:21 am

Bonjour, je cherche un htacces qui pourrait m'aider à faire ceci :
quand quelqu'un tape : http://www.monsite.com, il tombe sur
http://www.monsite.com
seulement, je voudrais que quand on tape
http://test.monsite.com on se retrouve sur http://www.monsite.com/page.php?id=test

Et donc, que le sous demaine deviennent un argument passé en parametre d'une page du domaine principal www

est ce que quel'un pourrait m'aider?
Merdi d'avance.

Benoit.
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Publicité

Messagede ioO » Ven Mai 04, 2007 9:29 am

Je me lance mais je te garanti rien.

Si c'est réellement test que tu recherches.
Code: Tout sélectionner
RewrtieEngine On
RewiteRule ^test$.monsite.com http://www.monsite.com/page.php?id=$1


Si ce n'est pas test mais tout mot en sous domaine
Code: Tout sélectionner
RewrtieEngine On
RewiteRule ^.+$.monsite.com http://www.monsite.com/page.php?id=$1


Deux erreurs possibles dans mon code :
L'expression régulière ^.+$ et peut être de pas utiliser une RewriteCond %{HTTP_HOST}
ioO
 
Messages: 10
Inscription: Jeu Mai 03, 2007 8:30 am

Messagede natsou_k » Ven Mai 04, 2007 9:35 am

En fait, c'est la deuxieme solution, seulement, il faudrait que ca soit tous les sous domaines excepté www.
Tu as une idée?
Merci pour ta reponse c est sympa :)
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede ioO » Ven Mai 04, 2007 9:58 am

Donc faut utiliser les RewriteCond :lol:
Un truc dans le style.
Code: Tout sélectionner
RewriteCond %{HTTP_HOST} !^www\.monsite\.com.+$ [AND]
RewriteCond %{HTTP_HOST} ^.+\.monsite\.com$
RewiteRule ^.+$.monsite.com http://www.monsite.com/page.php?id=$1


Ca c'est une piste, je pense pas que cela fonctionne.
Je teste si l'adresse demandée est différente de www.monsite.com ET qu'elle est une chaine avant .monsite.com
Dans ce cas j'applique la règle

Dis moi si ça fonctionne, je suis interressé :lol:
ioO
 
Messages: 10
Inscription: Jeu Mai 03, 2007 8:30 am

Messagede natsou_k » Ven Mai 04, 2007 10:17 am

J'ai essayé tel quel mais ca ne va pas :s
Il faut dire que je ne m y connais pas bcp dans les htaccess.
J'ai essayé ainsi aussi mais je n y suis pas parvenu :
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.site\.com.+$ [AND]
RewriteCond %{HTTP_HOST} (.*)\.site\.com$
RewiteRule (.*).site.com$ http://www.site.com/blogsos.php?nom=$1
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede ioO » Ven Mai 04, 2007 11:43 am

natsou_k a écrit:J'ai essayé tel quel mais ca ne va pas :s
Il faut dire que je ne m y connais pas bcp dans les htaccess.
J'ai essayé ainsi aussi mais je n y suis pas parvenu :
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.site\.com.+$ [AND]
RewriteCond %{HTTP_HOST} (.*)\.site\.com$
RewiteRule (.*).site.com$ http://www.site.com/blogsos.php?nom=$1


Et avec ^ en début de chaine ?
RewriteCond %{HTTP_HOST} ^(.*)\.site\.com$
ioO
 
Messages: 10
Inscription: Jeu Mai 03, 2007 8:30 am

Messagede natsou_k » Ven Mai 04, 2007 11:47 am

toujours pas :s
Merci pour tes reponses
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede ioO » Ven Mai 04, 2007 12:11 pm

Code: Tout sélectionner
RewrtieEngine On
RewiteRule ^.+$.monsite.com http://www.monsite.com/page.php?id=$1


Ca marchait ça au moins ?
ioO
 
Messages: 10
Inscription: Jeu Mai 03, 2007 8:30 am

Messagede natsou_k » Ven Mai 04, 2007 4:48 pm

Marche pas non plus. Mais cest rien je vais chercher ailleur.
Merci pour ton aide quand meme.
A plus
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede dcz » Ven Mai 04, 2007 5:01 pm

Ça peu pas vraiment marcher.

Le $ indique la fin de la chaîne, donc, faut le mettre éventuellement à la fin, pas au milieu.

Ensuite, il faut utiliser des parenthèses capturantes pour récupérer une valeur, du coup, ça serait plutôt :

Code: Tout sélectionner
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.example\.com$ [NC]
RewriteRule ^(.*) page.php?id=%1 [NC,L]


Et cela, dans la mesure ou les sous domaines en question sont bien configurés à chaque fois, il faut que test.example.com existe est point dans le même dossier que -www.example.com dans lequel doit se trouver page.php.

Si non, il faut en plus utiliser le module apache vhost-alias, qui doit donc êtré installé, pour configurer à la volée des sous domaines, quel qu'il soit.

Dans le VHOST, ça donne ça :
Code: Tout sélectionner
<VirtualHost *>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot /var/www/$1
</VirtualHost>


en plus du reste bien entendu.

A noter que l'utilisation du vhost-alias de cette façon va faire que tous les sous domaines possibles seront renvoyé vers page.php. A lui donc de vérifier la validité de la requête et de renvoyer une 404 quand le sous domaine ne doit pas exister, c'est une sage précaution pour éviter de se retrouver avec un domaine indexé comme addidas.example.com, ce qui pourrait conduire à des souci de propriété intellectuelle assez compliqués ;)

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21429
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede natsou_k » Ven Mai 04, 2007 5:08 pm

Merci pour ta réponses, c est tres sympa.
Et donc, si je comprends bien, je modifie le vhost en y mettant

<VirtualHost *>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot /var/www/$1
</VirtualHost>

Par contre, je ne vois pas vraiment comment il sait qu il doit rediriger vers example.com/page.php?nom=$1

Est ce que je peux faire un fichier vhost.php? pour qu il cree a chaque fois les sous domaines en fonction de ma base de données?
ou est ce que je dois recreer a chaque fois le vhost?

Merci d'avance pour tout.
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede dcz » Ven Mai 04, 2007 5:10 pm

Il faut que le module apache vhost-alias soit installé pour utiliser VirtualDocumentRoot dans un VHOST.

Ensuite, il te faudra quand même un jeux de RewriteCond RewriteRule dans le genre de ce que je t'ai posté, il faut les deux, vhost-alias c'est pour ne pas avoir à configurer tous les sous domaines à la main.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21429
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede natsou_k » Ven Mai 04, 2007 5:13 pm

Ok merci pour tes conseils. Est ce que tu connais un endroit ou je pourrais avoir une documentation complete de se que je dois faire stp?
Merci d'avane.
Ben
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Messagede dcz » Ven Mai 04, 2007 5:21 pm

Malheureusement, à par le manuel du mod_rewrite (et pour apache2), il n'y a pas à ma connaissance d'articles transcendant.

Une rapide recherche Google devrait faire apparaître les quelques articles qui traitent du vhost-alias (pour l'installer) et des sous domaines dynamique, mais c'est maigre.

Mais avec ce que je t'ai dis et un peu de patience, tu devrais y arriver sans problème.
Faudra juste peut être jouer un peu avec la rewriterule, en fonction de ta config, genre ajouter un slash ou un chemin plus précis.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21429
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede natsou_k » Ven Mai 04, 2007 7:31 pm

Ok, en tous cas, un tres grand merci pour ces conseils.
A bientot peut etre :)
natsou_k
 
Messages: 12
Inscription: Ven Mai 04, 2007 8:19 am

Suivante

Retourner vers mod rewrite Apache

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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