Problème url rewriting et sous-domaine

Nouveau WRInaute
Bonjour,

J'ai un souci de réécriture... Je ne vois pas du tout comment je peux faire ça :

Code:
http://fr.example.com vers http://www.example.com/accueil.php?langue=fr
et aussi :
http://fr.example.com/cadeau/ vers http://www.example.com/categorie.php?langue=fr&section=cadeau
mais encore :
http://fr.example.com/cadeau/tous/ vers http://www.example.com/categorie.php?langue=fr&section=cadeau&categorie=tous

D'un côté je mets le code langue au tout début sous la forme d'un sous-domaine (je la récupère dans le script) puis chaque répertoire correspond aussi à une variable PHP.

Je désespère d'y arriver...

Si quelqu'un a une piste, je le remercie par avance.
 
WRInaute passionné
Il me semble que cela ce face au niveau du ton hebergement.
Ce n'est pas avec de l'Htaccess que tu pourra faire cela.

Peut etre je me trompe.
Corrigé moi si je dis n'importe quoi.
 
Nouveau WRInaute
Je peux sans problème configurer un sous-domaine et le faire pointer vers un répertoire ou la racine du site mais j'aimerais récupérer la valeur du sous-domaine en tant que variable.
 
WRInaute impliqué
C'est compliqué ton truc, pourquoi ne pas simplement appeler des scripts se trouvant dans le dossier de ton sous domaine, vu que de toutes façon tu te retrouvera avec des chemins differents pour tes includes, images etc, il vaut mieux avoir deux versions assez similaire des script cible même s'il finit sur la même db et dans le même dossier includes, enfin, ça me parait moins compliqué que de le rendre multipath et multi domaine (en même temsp cela dépends de l'archtechture de ton script, des fois c simple).

Enfin, en tous cas cela marcherais comme je te le suggère.

++
 
Nouveau WRInaute
Pour faire ton truc je dirai qu il faut d abord que les sous domaine existent (par contre tu n as pas besoin de les faire pointer nulle part apres on s en occupe plus).
Ensuite tu fais une regle
RewriteCond %{HTTP_HOST} ^(.*)\.exemple\.com$
grace au () tu vas recuperer le sous domaine que l'on poura utiliser avec %1
et ensuite tu fais une regle qui utilise donc %1 du genre
RewriteRule TAREGEXP http://www.exemple.com/%1/page.php?id=$1

(ou $1 viendrais de TAREGEXP)

Voila je sais pas si j ai ete bien clair en tout cas c'est sur que ca marche c'est ce que j'ai fait pour www.packtravaux.com (tu peux voir ca sur la page http://www.packtravaux.com/devis.php) ou toutes les categories correspondent a un sous domaine.

--
Jean-Piroux
 
Nouveau WRInaute
Jean-Piroux a dit:
Pour faire ton truc je dirai qu il faut d abord que les sous domaine existent (par contre tu n as pas besoin de les faire pointer nulle part apres on s en occupe plus).
Ensuite tu fais une regle
RewriteCond %{HTTP_HOST} ^(.*)\.exemple\.com$
grace au () tu vas recuperer le sous domaine que l'on poura utiliser avec %1
et ensuite tu fais une regle qui utilise donc %1 du genre
RewriteRule TAREGEXP http://www.exemple.com/%1/page.php?id=$1

(ou $1 viendrais de TAREGEXP)

Voila je sais pas si j ai ete bien clair en tout cas c'est sur que ca marche c'est ce que j'ai fait pour www.packtravaux.com (tu peux voir ca sur la page http://www.packtravaux.com/devis.php) ou toutes les categories correspondent a un sous domaine.

--
Jean-Piroux
Merci pour vos réponses... J'ai testé sans trop forcer mais ça ne marche pas chez moi. Quelle version d'apache utilises-tu ?
Je poursuis sur cette voie, je sens que ça peut marcher de cette façon.
Je n'avais encore jamais vu TAREGEXP. Quel est sa signification ?
 
WRInaute occasionnel
Ca pourrait ressembler à ca, aux variations près en fonction de la configuration, des erreurs de frappe et du manque de café
Code:
RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/([^/]+)/([^/]+)/$ /categorie.php?langue=%1&section=$1&categorie=$2 [L]

RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/([^/]+)/$ /categorie.php?langue=%1&section=$1 [L]

RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/$ /accueil.php?langue=%1 [L]
 
Nouveau WRInaute
nikoshr a dit:
Ca pourrait ressembler à ca, aux variations près en fonction de la configuration, des erreurs de frappe et du manque de café
Code:
RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/([^/]+)/([^/]+)/$ /categorie.php?langue=%1&section=$1&categorie=$2 [L]

RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/([^/]+)/$ /categorie.php?langue=%1&section=$1 [L]

RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/$ /accueil.php?langue=%1 [L]
Merci !
Le code me parle plus de cette façon mais je ne comprends pas pourquoi ça ne fonctionne toujours pas chez moi.

Si je prends la réécriture la plus simple :
Code:
RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^/$ /accueil.php?langue=%1 [L]
le sous-domaine : fr.example.com existe bien et pointe vers la racine du site. Avec cette règle, rien ne se passe, je continue d'être dirigé vers la racine du site (/index.php) au lieu de accueil.php?langue=fr. Vraiment bizarre...

Vous avez une idée ?
 
WRInaute occasionnel
Juste pour voir si la réécriture se fait et ce que le serveur passe comme host, essaie ca tout seul
Code:
RewriteRule ^/$ /accueil.php?langue=fr&srv=%{HTTP_HOST} [L]
en faisant afficher la variable srv.
 
Nouveau WRInaute
Là, ça continue d'afficher la racine du site /index.php, ce qui montre que la réécriture ne se fait pas. D'où ça peut venir ?
 
WRInaute occasionnel
Soit l'expression régulière ne correspond pas au traitement, soit mod_rewrite n'est pas activé. Essaie
Code:
RewriteRule ^$ /accueil.php?langue=fr&srv=%{HTTP_HOST} [L] 
RewriteRule ^index.php$ /accueil.php?langue=fr&srv=%{HTTP_HOST} [L] 
RewriteRule ^/index.php$ /accueil.php?langue=fr&srv=%{HTTP_HOST} [L]
Normalement, l'une des trois devrait donner un résultat. Eventuellement sans / devant accueil
 
Nouveau WRInaute
Là, c'est bon, avec la 1ère expresison, la variable srv renvoie le nom de domaine de cette manière :
Code:
fr.example.com
 
Nouveau WRInaute
Rahh excellent, ça marche à présent. En fait, il y avait un slash de trop qui traînait. Avec ça, c'est ok :
Code:
RewriteCond %{HTTP_HOST} ^(fr|en)\.example\.com$
RewriteRule ^$ /accueil.php?langue=%1 [L]

Merci pour ton aide nikoshr ainsi qu'aux autres. Trop content là car j'ai passé un temps fou sur ça sans pouvoir débloquer !

Je poursuis mes tests... :D
 
Discussions similaires
Haut