За последние 24 часа нас посетили 35953 программиста и 1745 роботов. Сейчас ищут 1328 программистов ...

Мультиязычный ресурс через htaccess

Тема в разделе "Прочие вопросы по PHP", создана пользователем dhorh, 5 июн 2013.

  1. dhorh

    dhorh Активный пользователь

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    Доброго времени суток.

    Я решил организовать многоязычный сайт по типу mysite.com и en.mysait.com, изначально будет обычный перевод интерфейса, и так как контент у меня одинаковый, мне бы не хотелось все файлы настроек и подключений тупо копировать в папку поддомена.

    Главный файл index.php лежит в корне сайта, и нужно, чтобы принудительно, скорее всего через apache, посылалась переменная GET, к примеру:

    по запросу языковых доменов, отдавалось следующее:
    Код (Text):
    1. GET en.mysait.com  mysait.com/index.php?lang=en
    2. GET ua.mysait.com  mysait.com/index.php?lang=ua
    но, по другим, то есть по дефолту, отдавалась всегда переменная get со значением ru
    Код (Text):
    1. GET mysait.com  mysait.com/index.php?lang=ru
    2. GET images.mysait.com  images.mysait.com/index.php?lang=ru
    Не исключено, что данный велосипед давно придуман и "ездит" намного проще и быстрее, если у вас нет мыслей насчёт решения данной проблемы, то если вы знаете это "быстрый и давно придуманный велосипед" для данной конструкции, по пожалуйста подскажите, так как я не шарю в настройках сервера.

    Заранее спасибо.
     
  2. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    .htaccess

    Код (Text):
    1. Redirect /index.php?lang=en http://en.mysait.com
    2. Redirect /index.php?lang=ua http://ua.mysait.com
    в пхп проверяем
    Код (PHP):
    1. if(!empty($_GET['lang']) && $_GET['lang']==''){
    2. Header('Location: http://ru.mysait.com');
    3. } 
    или

    Код (PHP):
    1. if(!empty($_GET['lang']) && $_GET['lang']!=''){
    2. switch($_GET['lang']){
    3.   case 'ua' : Header('Location: http://ua.mysait.com'); break;
    4.   case 'en' : Header('Location: http://en.mysait.com'); break;
    5.   case 'fr' : Header('Location: http://fr.mysait.com'); break;
    6.   default: Header('Location: http://mysait.com'); break;
    7. }
    8. } 
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    bkm,
    А зачем при empty проверять опять на $_GET['lang']!='' пустоту?