web-dev-qa-db-fra.com

générer une URL conviviale pour un système multilingue

J'ai cette URL pour les systèmes multi-langues utilisant php:

http://mydomain/ <-- default language english (en)
http://mydomain/index.php?lang=de
http://mydomain/index.php?lang=fr
http://mydomain/index.php?lang=tr

Maintenant, pour une autre page, j'ai cette URL:

http://mydomain/article.php?id=xx <-- show article details
http://mydomain/article.php?list=all  <-- show article archive
http://mydomain/gallery.php?id=xx
http://mydomain/faq.php?id=xx
http://mydomain/faq.php?list=all
http://mydomain/contact.php

Maintenant, j'ai besoin de créer une URL conviviale pour le référencement utilisant php et htaccess comme ceci:

pour l'index:

http://mydomain/  <-- for default
http://mydomain/de/
http://mydomain/fr/

pour l'article ie: (domain/lang/id/title.html)

http://mydomain/de/articles/22/test.html

pour la page:

http://mydomain/de/contact.html

pour archive:

http://mydomain/de/articles/listall.html

dans htaccess j'écris ce code pour l'article:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^articles/([0-9]+)/([A-Za-z0-9-]+)/?.html$ articles.php?id=$1

mais cela a fonctionné pour une langue pas plusieurs langues. Comment puis-je créer une URL conviviale pour un système multilingue?!

2
MeMoR

Essayez quelque chose comme RewriteRule ^([en|es|ru|de]{2})/(.*)$ $2?lang=$1&%{QUERY_STRING} [L,QSA]

Où vous voudrez remplacer [en | es | ru | de] par les codes de langue valides à deux lettres que votre site utilise. Cela prendra ensuite ce qui se trouve après le code de langue dans l'URL, et l'utilisera comme URL "principale", puis ajoutera? Lang = es à l'URL "réelle", bien que l'utilisateur ne le verra pas, il le fera. arriver en arrière-plan.

1
nathangiesbrecht