URL Rewriting et Multilingues

Nouveau WRInaute
Salut à tous !
J'ai un petit souci pour écrire mes redirections et j'ai besoin de vos lumières.
Je vous explique rapidement le contexte : je dois faire un site internet multilingues qui a une partie Grand Public (GP) et une partie Professionnel (Pro).
La partie Professionnel peut contenir X "univers" (j'entends par univers par exemple l'univers de la mode, l'univers de l'automobile,etc...).

Ce que je voudrais faire et que j'arrive à faire en partie c'est soit :

1/ Je souhaite me connecter au site GP :
Je tape l'url http://www.monsite.com/ je suis redirigé automatique sur http://www.monsite.com/fr/ (le français étant la langue par défaut)
Pour ce faire, j'ai mis dans mon fichier .htaccess :
Code:
RewriteEngine on

# redirection vers une langue si / seul demandé
RewriteCond %{REQUEST_URI} ^/$
RewriteRule .* /fr/ [R=301]

Et après pour info, lorsque je navigue dans le site j'utilise ce principe de règle :
Code:
# page exemple, ex: /en/exemple.html
RewriteRule ^(fr|en|es)/exemple.html$ exemple.php?l=$1 [QSA,L]

Pour le site GP, je n'ai pas de soucis mais l'autre partie je comprends rien.

Je vais essayer d'être clair.

2/ Je souhaite me connecter au site Pro
Je tape l'url http://www.monsite.com/mode/ ou http://www.monsite.com/automobile/

Je voudrais être redigiré sur http://www.monsite.com/mode/fr/ pour prendre le premier exemple.

Donc dans mon fichier .htaccess avoir un truc du genre :
Code:
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteRule .* /$1/ [R=301]

Et après gérer avec un truc du style :
Code:
RewriteRule ^(.+)/(fr|en|es)/$ index.php?univers=$1&l=$2

Et donc pouvoir récupérer le paramètre 'univers' et la langue 'l'...

Et la difficulté pour moi c'est de faire fonctionner ses règles en parallèles, parce que comme je l'ai dit avant ça fonctionne nickel pour le site GP mais je sais que pour faire marcher l'autre aussi va falloir modifier les règles.

Enfin je sais pas si je suis clair mais c'est le bordel dans ma tête. Ca fait 1 semaine que j'essaie mais là franchement j'en peux plus.

Mais si quelqu'un peut me filer un petit coup de main je lui en serais reconnaissant.

Merci d'avance.[/code]
 
Nouveau WRInaute
Nouveau WRInaute
Bon ben j'ai fait un truc qui est pas forcément tip top mais je le met au cas où quelqu'un aurait un jour ce genre de souci.

Code:
RewriteEngine on

# redirection vers la langue française http://www.monsite.com/fr/ si on tape http://www.monsite.com/
# ou redirection vers l'univers et la langue française http://www.monsite.com/univers/fr/ si on tape http://www.monsite.com/univers/

RewriteCond %{REQUEST_URI} ^(/[0-9A-Za-z-]{3,})?/$
RewriteRule .* %1/fr/ [R=301]

RewriteRule ^([0-9A-Za-z-]{3,})?/?(fr|en|es)/$ index.php?univers=$1&l=$2 [QSA,L]

Le principe est que mes langues sont définies sur 2 caractères et que pour ne pas partir en boucle infinie je ne prend en compte l'univers que si il a au minimum 3 caractères.

Si quelqu'un a mieux je suis preneur. A+
 
WRInaute discret
kamkam a dit:
Je voudrais être redigiré sur http://www.monsite.com/mode/fr/

Je pense qu'il vaut mieux placer la langue avec l'univers : http://www.monsite.com/fr/mode/

C'est cette forme qui est la plus répandue et sans doute la plus logique/homogène. Comme ça quand quelqu'un navigue sur le site, l'adresse de base reste toujours http://www.monsite.com/fr/. Et passe pas du http://www.monsite.com/phoque/fr/ à l'http://www.monsite.com/ane/fr/ :P

kamkam a dit:
Et la difficulté pour moi c'est de faire fonctionner ses règles en parallèles, parce que comme je l'ai dit avant ça fonctionne nickel pour le site GP mais je sais que pour faire marcher l'autre aussi va falloir modifier les règles.

Enfin je sais pas si je suis clair mais c'est le bordel dans ma tête. Ca fait 1 semaine que j'essaie mais là franchement j'en peux plus.

Je vois pas pourquoi tu considères un cas spécial. Okay il y a deux modes de consultation mais quel rapport avec la réécriture des URLs ? ça devrait plutôt être géré par une session ou un cookie au chocolat.
 
WRInaute discret
kamkam a dit:
Code:
RewriteRule ^([0-9A-Za-z-]{3,})?/?(fr|en|es)/$ index.php?univers=$1&l=$2 [QSA,L]

Le principe est que mes langues sont définies sur 2 caractères et que pour ne pas partir en boucle infinie je ne prend en compte l'univers que si il a au minimum 3 caractères.

Pas la peine de définir un min de 3 carac. puisque l'expression se limite aux seuls caractères alphanumériques. De plus l'univers et la langue sont clairement séparés par un / donc no problem si tu utilises + à la place de {3,}.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut