Многоязычная проблема с переписыванием модов на сайте - PullRequest
0 голосов
/ 25 августа 2011

У меня проблема с перезаписью модов, и я не нашел здесь никакого решения.Вот проблема:

У меня есть веб-сайт с двумя языками, и URL-адрес мода должен выглядеть примерно так:

/eng/contact
/srp/kontakt

/eng/news
/srp/vesti

/eng/event
/srp/najava

Правило перезаписи шахты не работает, потому что я в ситуации .htacess, как это:

# news
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ news.php?lang=$1&pagename=$2 [NC,L]

# contact
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ contact.php?lang=$1&pagename=$2 [NC,L]

# event
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ event.php?lang=$1&pagename=$2 [NC,L]

Мой вопрос: как добиться перезаписи страниц в приведенных выше примерах?

1 Ответ

2 голосов
/ 25 августа 2011

Я бы использовал:

RewriteRule ^([^/]+)/([^/]+)/*$ index.php?lang=$1&pagename=$2&%{QUERY_STRING}

, а затем перенаправил бы поток PHP из index.php в news.php / contact.php и т. Д., Используя простую инструкцию switch-case-include:

switch ($_GET['pagename'])
{
    case 'news':
        require_once 'news.php';
        break;
    ...
    ...
}

Это также поможет вам разработать другие функции, связанные с маршрутизацией, упрощающие файл .htaccess.Это также позволяет легко искать собственные имена подстраниц, такие как «en / contact», но «pl / kontakt» и т. Д.

Я использую этот подход почти на всех своих сайтах (например, http://www.calculla.com/en/ascii2hex и http://www.calculla.com/pl/ascii2hex).

...