Url rewriting pour un site multilingue

Résolu/Fermé
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 23 juil. 2008 à 19:34
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 25 juil. 2008 à 23:00
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.

7 réponses

gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 330
23 juil. 2008 à 19:47
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
23 juil. 2008 à 21:17
les regex, c'est relativement opaque pour moi...

url visible : /pays/page.php
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 330
23 juil. 2008 à 23:29
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 330
25 juil. 2008 à 12:25
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 juil. 2008 à 22:10
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 330
25 juil. 2008 à 22:53
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 juil. 2008 à 23:00
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