2014-12-18 4 views
1

Я ищу, чтобы использовать языковой переключатель на нашем веб-сайте, используя mod rewrite. Вместо того, чтобы показывать:modrewrite language параметр

https://www.website.com/rest/of/my-site?lang=it 
https://www.website.com/en/rest/of/my-site 

Проблемы возникают здесь. Наша текущая конфигурация мод переписаны:

# General rewrites 
RewriteRule -p([0-9]+)\.html$ index.php?module=page&id=$1&%{QUERY_STRING} [L] 
RewriteRule (news|nieuws)/(.*)\.html$ index.php?module=news&url_raw=$2&%{QUERY_STRING} [L] 
RewriteRule (.*)\.html$ index.php?module=page&url_raw=$1&%{QUERY_STRING} [L] 
#rewriteRule contact(/|)$ index.php?module=contact&%{QUERY_STRING} [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ index.php?module=page&url_raw=$1&%{QUERY_STRING} [L] 

B Mod переписаны и PHP фрагмент Когда моды переписывают работают пользователь должен иметь возможность переключаться с

  • website.com/en/rest/из/мой-сайт
  • website.com/it/rest/of/my-site

Вместо

  • website.com/en/rest/of/my-site?lang=it

Я попробовал несколько вариантов (language parameter rewrite with mod_rewrite), но я не пришел достаточно далеко с ним.

+0

ли запрос всегда указывает на website.com/en, если это не другая локаль? Это означает, можем ли мы полагаться на то, что первая папка представляет языковой стандарт? – LucasF

+0

Да, это правильно. Al/en,/it и т. Д. Указывают на одну и ту же папку. – Influenist

ответ

0

Попробуйте добавить это к вершине ваших правил:

RewriteCond %{THE_REQUEST} \ /+(.*)\?(.*?)&?lang=([^&\ ]+)([^\ ]*) 
RewriteRule^/%3/%1?%2%4 [L,R] 

RewriteCond %{QUERY_STRING} !(^|&)lang= 
RewriteRule ^([a-z][a-z])/(.*)$ /$2?lang=$1 [L,QSA] 
+0

Работает как очарование! :) – Influenist