Url rewriting pour un site multilingue

Résolu
ThEBiShOp Messages postés 9307 Statut Contributeur -  
ThEBiShOp Messages postés 9307 Statut Contributeur -
Bonjour à tous,

je voudrais mettre en place un url rewriting pour un site multilingue de la façon suivante :

page.php?lang=fr => /fr/page.php
page.php?lang=uk => /uk/page.php

en sachant que ce paramètre n'est pas obligatoire et que dans ce cas le langage par défaut est le français.

J'ai fait des recherches, bien sûr, mais les tutos et explications en tous genres sur l'url rewriting partaient un peu dans tous les sens pour une application relativement simple à première vue...

Merci à tous ceux qui prendront la peine de m'aider.
A voir également:

7 réponses

gryzzly Messages postés 5220 Statut Contributeur 1 335
 
1) Il faut que tu regardes du coté des regex / expressions regulières ...
Et que tu regardes selon la particularité de ton serveur (apache, lighttpd, ...)

2) Dans quel sens tu veux que ton rewrite fonctionne ? lequel est l'url visible ?
0
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
les regex, c'est relativement opaque pour moi...

url visible : /pays/page.php
0
gryzzly Messages postés 5220 Statut Contributeur 1 335
 
sans garantie de résultat, je considère que le nom de tes pages ne peuvent comprendre que des caractères alphanumériques = 0 à 9 et lettres non accentuées ; ainsi que les caractères tiret bas _ et tiret -

Fichier .htaccess proposé (n'ayant pas précisé, je suppose que tu es sous Apache...) :

RewriteEngine on
RewriteRule ^/([a-zA-Z]){2}/([a-zA-Z0-9_-]+)\.php $2.php?lang=$1 [L]
RewriteRule ^/([a-zA-Z0-9_-]+)\.php $1.php?lang=fr [L]


Résultat que je suppose obtenir avec ces règles (faudrait tester, la flemme de lancer apache et d'écrire des pages pour faire tourner) :

url de type : www.domaine.tld/nom_de_la_page.php ==> appelle ==> nom_de_la_page.php?lang=fr
url de type : www.domaine.tld/code_pays/nom_de_la_page.php ==> appelle ==> nom_de_la_page.php?lang=code_pays
0
gryzzly Messages postés 5220 Statut Contributeur 1 335
 
ca donne quoi ?

il y a peut être une erreur ...

RewriteEngine on
RewriteRule ^/([a-zA-Z]{2})/([a-zA-Z0-9_-]+)\.php $2.php?lang=$1 [L]
RewriteRule ^/([a-zA-Z0-9_-]+)\.php $1.php?lang=fr [L]


et p'tet même des erreurs :o)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
Tout d'abord merci de votre aide

sur free j'ai une erreur 500 (...), sur 1&1 j'ai une 404, et sur easyphp de même.
0
gryzzly Messages postés 5220 Statut Contributeur 1 335
 
Sur free, c'est normal, rewrite interdit.
404 = non trouvé ... y'a donc erreurs :o)

Je ne peux que te conseiller de lire un peu des infos sur les regex ...
0
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
Ouais, je pense que je vais opter pour un sous-domaine du style http://en.mon-site.com et un script php qui va récupérer le sous-domaine pour détecter et changer la langue... Plus simple pour moi :)

Merci de votre aide.
0