url rewriting dans nom de domaine

Nouveau WRInaute
Bonjour,

je sais que le sujet est évoqué souvent mais voila mon problème, il n'est pas si évident.

J'ai un site internet multilangues et plusieurs noms de domaines locaux.
La variable de langue qui se stocke en session est d'abord passé en GET.

Ce que je souhaite c'est que si un internet tape www.monsite.es il arrive en fait sur www.monsite.fr/?langue=es MAIS que l'url affichée soit www.monsite.es.

Je sais qu'avec une redirection invisible il n'y a pas de probleme, mais justement je souhaite que les noms des répertoires (en fait en url rewriting) soient visibles. Donc que:

www.monsite.es/repertoire appelle en fait www.monsite.fr/repertoire par exemple...

si quelqu'un cerne mon probleme et a une solution je suis preneur ! Merci par avance de votre aide !
 
WRInaute impliqué
Ne met pas R=301 sinon c'est l'adresse réécrite qui va s'afficher, pas l'adresse tapée dans le navigateur.

Et le L n'est pas nécéssaire si tu fais une redirection externe.

Bref, essaie donc ça:

Code:
RewriteCond %{HTTP_HOST} ^www\.monsite\.es$
RewriteRule (.*) http://www.monsite.fr/?langue=es [QSA]

le QSA est là si tu passe d'autres paramètres.

Pour que ça marche il faut que le domaine en .es pointe vers le même espace disque que le domaine en .fr
 
Nouveau WRInaute
hello, ok j'ai testé ceci:

RewriteCond %{HTTP_HOST} ^www\.monsite\.co.uk$
RewriteRule (.*) http://www.monsite.fr/?lang=uk [QSA]

et ca fonctionne, il y a bien une redirection qui s'effectue MAIS ce que je cherche à faire serait au lieu d'avoir http://www.monsite.fr/test/?l=uk dans la barre d'adresse d'avoir http://www.monsite.co.uk/test/?l=uk

pour faire clair:

si on tape www.monsite.co.uk/test on arrive sur www.monsite.fr/test/?lang=uk mais qui s'affiche www.monsite.co.uk/test dans la barre d'état

je suis désolé si je ne suis pas très clair mais je ne vois pas bien comment l'expliquer, si toutefois quelqu'un a une idée... merci !
 
WRInaute impliqué
C'est clair, pas de souci.

Est-ce que tes deux domaines pointent vers le même espace disque? Autrement dit, sans réécriture, est-ce que www.monsite.co.uk et www.monsite.fr sont sur le même hébergeur et pointent vers le même espace disque?
 
Nouveau WRInaute
non actuellement ce n'est pas redirigé exactement vers le même endroit, c'est sur le même serveur mais sur deux dossier dufférents, cela peut évidemment etre changé si ca peut m'aider a obtenir des urls optimisées
 
Nouveau WRInaute
bon j'ai fait pointer les deux urls vers le même serveur avec un alias pour le point co.uk mais j'ai un message d'erreur interne...
 
WRInaute impliqué
jeanvilou a dit:
bon j'ai fait pointer les deux urls vers le même serveur avec un alias pour le point co.uk mais j'ai un message d'erreur interne...

C'est normal, ta redirection pointant désormais sur le meme endroit, ca boucle.

Maintenant que tes deux domaines sont équivalents sur le disque, tu peux mettre une règle très simple:

Code:
RewriteCond %{HTTP_HOST} ^www\.monsite\.co.uk$
RewriteRule (.*) /index.php?lang=uk [QSA]

en supposant que ta page d'index est index.php
 
Nouveau WRInaute
bonjour, merci de l'astuce, la redirection et la réécriture se font bien, juste un bémol, mais liens ne fonctionnent pas...

par exemple si je souhaite accéder à la page:
http://www.monsite.co.uk/pages.php?p=ma_page

j'arrive sur
http://www.monsite.co.uk/index.php?lang=uk&p=ma_page

c'est normal vu la règle d'écriture, car si j'ai bien compris a chaque fois qu'on écrit www.monsite.co.uk c'est remplacé par /index.php?lang=uk

j'ai également une autre règle qui est
RewriteRule ^([a-z0-9_-]+)$ pages.php?p=$1 [L]

qui permet de remplacer http://www.monsite.co.uk/pages.php?p=ma_page par http://www.monsite.co.uk/ma_page

je suis désolé je ne suis au top en matière de réécriture d'url... comment puis-je faire pour que mes liens soient pris en compte ? merci par avance ! (pour que http://www.monsite.co.uk/ma_page s'affiche correctement)
 
WRInaute impliqué
Peux tu mettre toutes tes règles (dans l'ordre ou elles sont dans le .htaccess) et aussi toutes les réécritures que tu veux?

EN effet, ssi tu me les distille une a une on va mettre longtemps :wink:

Mais je crois savoir ce que tu veux, et ça me parait faisable. Mais je préfère que tu me dise ce que tu veux au lieu de devoir le deviner!
 
Nouveau WRInaute
oui excuse moi, désolé, c'est vrai j'aurais dit tout mettre de puis le début...

alors voila j'ai un site internet, qui doit etre visible sur 3 noms de domaines, avec une langue différente par nom de domaine.
Toutes les pages sont contenues dans une base de données. Une base par langue.

Quand on tape www.monsite.es ou www.monsite.co.uk on doit arriver sur www.monsite.fr/?l=uk ou www.monsite.fr/?l=uk
L'url rewriting doit permettre, si l'on tape un nom de domaine différent de .fr de réécrire le .fr en .co.uk ou .es selon l'url tapée.

Ensuite la va variable $_GET['l'] est reprise dans uen variable de session, et c'est sur cette variable qu'on sélectionne la base de données où il faut extraire les textes.

On peut par exemple avoir une page de type www.monsite.es/pages.php?p=ma_page

mais je souhaite que cette page soit appellée de cette manière: www.monsite.es/ma_page et qui correspond en fait à www.monsite.fr/pages.php?p=ma_page AVEC la variable de session langue définie come ES pour l'espagne.

Voici mon .htaccess:

RewriteCond %{HTTP_HOST} ^www\.anyword\.es$
RewriteRule (.*) /test2/?l=es [QSA]

RewriteRule ^([a-z0-9_-]+)$ pages.php?p=$1 [L]

... et c'est tout !


pour le moment tout fonctionne sauf la réécriture des pages.php?p=ma_page

pour faire plus simple j'ai essayé de supprimer la page "pages.php" pour ne travailler qu'avec le fichier index, qui selon la variable $p affiche soit le contenu de la home page, soit le contenu de la page indiqué par la variable. j'ai testé avec www.monsite.es/?p=ma_page (qui correspondont en fait à www.monsite.fr?index.php?l=es&p=ma_page) et j'obtiens bien le contenu souhaité mais si je fais www.monsite.es/ma_page je reste sur la page index.

voila où j'en suis... c'est pas évident en fait...
 
WRInaute impliqué
C'est ce que je pensais, merci d'avoir confirmé.

Essaie d'intervertir les règles :

Code:
RewriteRule ^([a-z0-9_-]+)$ pages.php?p=$1 [L] 

RewriteCond %{HTTP_HOST} ^www\.anyword\.es$
RewriteRule (.*) /test2/?l=es [QSA]

Ca devrait mieux marcher.

Mais si quelqu'un suit un lien vers une page autre que l'index, sans passer par l'index, la variable de session sur la langue ne sera pas renseignée. Que feras tu dans ce cas?

il me semble plus sûr de continuer a passer la langue en parametre:

Code:
RewriteCond %{HTTP_HOST} ^www\.anyword\.fr$
RewriteRule ^([a-z0-9_-]+)$ pages.php?l=fr&p=$1 [L] 

RewriteCond %{HTTP_HOST} ^www\.anyword\.es$
RewriteRule ^([a-z0-9_-]+)$ pages.php?l=es&p=$1 [L] 

RewriteCond %{HTTP_HOST} ^www\.anyword\.fr$
RewriteRule (.*) /test2/?l=fr [L]

RewriteCond %{HTTP_HOST} ^www\.anyword\.es$
RewriteRule (.*) /test2/?l=es [L]
 
Nouveau WRInaute
merci c'est cool, ca fonctionne. Sinon je peux, en php, définir la variable la valeur de la session lang selon le nom de domaine utilisé non ? ou encore selon la langue du navigateur ? qu'en penses-tu ? merci encore en tout cas !
 
WRInaute impliqué
jeanvilou a dit:
merci c'est cool, ca fonctionne. Sinon je peux, en php, définir la variable la valeur de la session lang selon le nom de domaine utilisé non ? ou encore selon la langue du navigateur ? qu'en penses-tu ? merci encore en tout cas !

Il y a des sites qui utilisent la langue du navigateur en effet.

Personnellement ca me gave, car le navigateur sur mon PC au boulo est en anglais, ce qui rend impossible la visite de la la version française de certains sites!

Je n'aime pas les choix automatiques, je préfère qu'on me laisse le choix.

Par contre, une fois le choix faut j'aime bien qu'il soit respecté. Donc si je clique sur un petit drapeau français, je m'attend ensuite à ne visiter que des pages en français. Même si la langue de mon navigateur est l'anglais.

Je ne sais pas si je suis représentatif, continue à demander l'avis d'autres, y compris sur d'autres forums (webmasterhub par exemple). Ici, ouvre un autre topic, car ce n'est plus un problème de réécriture, ni de page rank et redirection...

Bon courage pour la suite en tout cas!
 
Discussions similaires
Haut