Redirection entre 2 noms de domaines sur le même serveur

Nouveau WRInaute
Bonjour,

j'ai deux noms de domaine, un xxxxxxxx.fr pour le contenu en français et xxxxxxxxxxx.com pour le contenu en anglais, qui pointe sur le même dossier de mon serveur. Le CMS que j'utilise permet de dissocier un site bilingue en deux sites distincts.

Malheureusement si je tape l'url
xxxxxxxxxxx.fr/en/Nom_Rubrique_Gb/Nom_Page_GB
je peux afficher la page en anglais sur le site en français et inversement si je tape l'url
xxxxxxxxxxx.com/fr/Nom_Rubrique_Fr/Nom_Page_Fr
je peux afficher la page en français sur le site en anglais.

Je cherche donc à faire en sorte que si l'url demandée contient
xxxxxxxxxx.fr/en
elle soit redirigée sur
xxxxxxxxx.com/en
en transmettant aussi ce qui suit le
et inversement si l'url demandée contient
xxxxxxxxxx.com/fr
elle soit redirigée sur
xxxxxxxxx.fr/fr

Je viens de passer la journée à essayer plein de choses notamment :
Code:
RedirectMatch "www.xxxxxxxxxxxx.fr/en/(.*)$" "www.xxxxxxxxxx.com/en/$1"

Code:
RedirectPermanent /en/Nom_Rubrique_Gb/ http://www.xxxxxxxxxxxxxx.com/en/Nom_Rubrique_Gb/

Code:
Redirect 301 ^/en/Nom_Rubrique_Gb(.*) http://www.xxxxxxxxx.com/en/Nom_Rubrique_Gb/$1

Code:
RedirectPermanent "/en/Nom_Rubrique_Gb" http://www.xxxxxxxxxxxxxxxx.com/en/Nom_Rubrique_Gb

Mais rien n'a fonctionné :(

D'avance merci à vous
 
Nouveau WRInaute
Bonjour,

Normalement vous devriez rediriger vers xxx.fr et non pas vers xxx.fr/fr

et xxx.com et non pas xxx.com/en

non ?
 
Nouveau WRInaute
wissemovitch a dit:
Bonjour,

Normalement vous devriez rediriger vers xxx.fr et non pas vers xxx.fr/fr

et xxx.com et non pas xxx.com/en

non ?

J'utilise un CMS qui gère le multilingue et les /fr et /en correspondent aux langues c'est pour cela que je cherche à faire une redirection en ajoutant les /fr et /en
Mais je suis preneur de toutes les bonnes idées .... :D
 
WRInaute accro
Vous avez deux noms de domaine, un dédié au contenu français, un à l'anglais. C'est donc dommage de rajouter un niveau inutile dans les url. La VF devrait être à la racine du .fr, la VA à la racine du .com.

Code:
RewriteEngine On
#je redirige tout appel dans un dossier fr du .com vers la racine du .fr
RewriteCond   %{HTTP_HOST} ^www\.[^.]+\.example\.com$
RewriteRule ^fr/(.*)$ http://www.example.fr/$1 [R=301,L]
#je redirige tout appel dans un dossier en du .fr vers la racine du .com
RewriteCond   %{HTTP_HOST} ^www\.[^.]+\.example\.fr$
RewriteRule ^en/(.*)$ http://www.example.com/$1 [R=301,L]
 
Nouveau WRInaute
UsagiYojimbo a dit:
Vous avez deux noms de domaine, un dédié au contenu français, un à l'anglais. C'est donc dommage de rajouter un niveau inutile dans les url. La VF devrait être à la racine du .fr, la VA à la racine du .com.

Effectivement cela serait plus simple d'avoir un dossier Fr et un dossier GB vers lesquels pointeraient les noms de domaine. Mais le /fr et le /en ne sont que virtuels ils n'existent pas en temps que dossiers.

Je vais essayer demain votre solution et je reviendrais vous dire.

Encore merci
 
WRInaute accro
Effectivement cela serait plus simple d'avoir un dossier Fr et un dossier GB vers lesquels pointeraient les noms de domaine. Mais le /fr et le /en ne sont que virtuels ils n'existent pas en temps que dossiers.

Ca ne change rien, les dossiers virtuels sont tout à fait captables via une redirection. Attention, mon exemple part du principe que c'est vers la racine que vous redirigez. Dans votre cas de figure, si vous maintenant les sous-dossiers virtuels, cela sera plutôt :

RewriteEngine On
#je redirige tout appel dans un dossier fr du .com vers la racine du .fr
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.example\.com$
RewriteRule ^fr/(.*)$ http://www.example.fr/fr/$1 [R=301,L]
#je redirige tout appel dans un dossier en du .fr vers la racine du .com
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.example\.fr$
RewriteRule ^en/(.*)$ http://www.example.com/en/$1 [R=301,L]

Et il faut faire bien attention aux impacts possible, et à modifier tous les appels possibles des url erronnés :
- hreflang
- canonical
- sitemap.xml
etc.
 
Nouveau WRInaute
UsagiYojimbo a dit:
RewriteEngine On
#je redirige tout appel dans un dossier fr du .com vers la racine du .fr
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.example\.com$
RewriteRule ^fr/(.*)$ http://www.example.fr/fr/$1 [R=301,L]
#je redirige tout appel dans un dossier en du .fr vers la racine du .com
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.example\.fr$
RewriteRule ^en/(.*)$ http://www.example.com/en/$1 [R=301,L]
Re,
j'ai essayé et cela ne fonctionne pas :?
UsagiYojimbo a dit:
Et il faut faire bien attention aux impacts possible, et à modifier tous les appels possibles des url erronnés :
- hreflang
- canonical
- sitemap.xml
etc.
Les liens canonical sont bons
Il y a un sitemapindex.xml qui oriente vers un fichier sitemapFR.xml pour le FR et un fichier sitemapEN.xml pour le EN
Pour l'instant je n'ai pas encore traité les liens hreflang

Merci
 
WRInaute accro
Les règles sont bien JUSTE AU-DESSOUS de RewriteEngine On ?

On peut voir ce que tu as mis (remplaces ton nom de domaine par example).
 
Discussions similaires
Haut