THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Duplicate sur sous domaine

(30-10-2024 14:20:23)


Bonjour à tous,
Je m'aperçois avec stupeur que mon site sert du duplicate.

Voici le contexte :

Le site principal, en langue fr, est sur www.example.com,
le sous domaine www.en.example.com sert la langue anglaise

www.example.com sert des urls telles que www.example.com/produit
www.en.example.com sert des urls telles que www.en.example.com/product

Tout est ok sauf que je peux acceder a des urls telles que www.en.example.com/produit.
Mon sous domaine sert aussi toutes les urls du domaine principal.

On ne peut pas accèder a www.example.com/product, donc de ce coté, c'est ok.


Je me doute qu'il faut que je gère ça avec mon htaccess, je ne sais juste pas dans quel sens "attrapé" ce problème, donc si quelqu'un a une idée ou a déja rencontré ce souci.

Merci

Offline


Bonjour, quelques questions pour éclaircir ma lanterne :

- Cela veut dire que tu as 2 Thelia installés ? (un pour le domaine principal et un pour le sous-domaine ?
- Que veux-tu dire par

Mon sous domaine sert aussi toutes les urls du domaine principal.

Je n'arrive pas à comprendre comment tu as installé ton projet.
Bonne journée,
Éric LM

Offline


Bonjour elm31rugby

- Cela veut dire que tu as 2 Thelia installés ? (un pour le domaine principal et un pour le sous-domaine ?

Non, je n'ai qu'un seul thelia, dans /admin/configuration/languages, j'ai :
Utiliser un domaine ou un sous domaine pour chaque langue
Français     https://www.example.com
English     https://www.en.example.com

Dans mon configurateur de zones DNS, j'ai configuré le champ A du sous-domaine pour qu'il pointe vers l'adresse IP.

- Que veux-tu dire par
Mon sous domaine sert aussi toutes les urls du domaine principal.

Je vais essayer de reformuler.
Sur mon domaine principal, j'ai par exemple un produit qui a pour url :
https://www.example.com/mon-super-produit.html

avec son équivalent sur le sous domaine anglais :
https://www.en.example.com/my-super-product.html

sauf que j'arrive à acceder aussi a https://www.en.example.com/mon-super-produit.html


J'espère avoir été plus clair

Offline


J'ai (une fois de plus ..) répondu de manière incomplète.


J'ai aussi un outil chez l'hébergeur, pour gerer les sous domaines.
J'ai donc bien mon sous domaine qui pointe vers /web.

Ceci dit, j'ai checké pas mal de thelia sur le oueb, j'ai trouvé le problème que je rencontre sur un certain nombre de site.

Offline


Bonjour, je n'ai jamais fait de multilang sous Thelia. J'en ai fait sous spip. Voilà ce que j'ai écrit à ce sujet en son temps :
https://www.blanche-de-peuterey.com/Spi … ultilingue
Je ne sais pas comment tu as configuré ton site sous Thelia, j'imagine qu'il y a un dossier de produit par langue, et que tu passes la langue dans l'URL

A partir du moment où tes produits sont, dans chaque langue, dans un dossier différent, et que tu passes la langue dans l'URL, (et que dans tes boucles il y a le critère lang) je ne vois pas comment tu peux avoir en.example.com/mon-super-produit/html

Après, peut-être ma technique est-elle ancienne, et que maintenant on fait du multilang autrement...
Je continue à suivre cette discussion, car elle m'intéresse...
Il faut adapter sous Thelia, car il n'y a pas, que je sache, les blocs <multi>. Mais il y a les fichiers de lang qui devraient faire l'affaire.

Offline


Je n'ai pas fait de spip depuis longtemps mais en tout cas sous thelia,
voila ma compréhension :

Dans admin/configuration/languages, on peut activer les langues souhaitées, dès lors dans les category, product, folder, content, etc, il y a un petit drapeau qui apparait permettant de gerer les traductions.
Ces traductions sont enregistrées en BDD.
Il y a les tables 'product' et 'product_i18n', toutes les versions liés au langues sont dans 'product_i18n'.

Coté template, cela fonctionne bien avec les boucles du template de base.

je ne vois pas comment tu peux avoir en.example.com/mon-super-produit/html

C'est bien ça le problème wink

Offline


En fait, si tu demande l'URL ré-écrite de la version française (mon-super-produit.html), Thelia va automatiquement basculer sur le français, et ce même sur le domaine qui par défaut affiche le site en anglais.

Définir un sous-domaine par langue n'est qu'un point d'entrée pour afficher le site dans la langue associée au sous-domaine. Rien n'interdit de changer de langue sur tous les sous-domaines.

Perso, je privilégierait un seul domaine, avec des URLs de la forme /fr/mon-super-produit.html et /en/my-super-product.html. pas de risque de duplicate content dans ce cas.

Le module RewriteUrl (https://github.com/thelia-modules/RewriteUrl) peut t'aider à gérer finement tes URLs si besoin.


OpenStudio Toulouse

Offline


Thelia va automatiquement basculer sur le français, et ce même sur le domaine qui par défaut affiche le site en anglais.

oui merci de confirmer ! J'ai eu beau chercher dans le core, je n'ai pas trouver la partie qui gère ce comportement. Peux tu me dire de quel coté cela se passe ?

Perso, je privilégierait un seul domaine, avec des URLs de la forme /fr/mon-super-produit.html et /en/my-super-product.html. pas de risque de duplicate content dans ce cas.

Arff, le site existe depuis longtemps sous la forme, j'aurais du démarrer comme tu l'indiques.
J'aurais un peu peur de passer pas mal de temps et de casser mon réferencement en modifiant à présent.

Le module RewriteUrl

Je te remercie énormement car en re-lisant la doc du module, ça m'a donné une idée.
Sur mon environnement de test, j'ai mis :

RewriteCond %{HTTP_HOST} ^en\.example\.com$
RewriteRule ^(.*)$ index.php?lang=en_US [QSA,L]




Cela semble faire le taf, mais il faut que je prenne le temps de vérifier que ça fait uniquement ce que je veux et pas autre chose. C'est tout un truc les rules htaccess.