Многодоменность на одном хосте

scorpion-ds

Новичок
Имеется хост, настроенный на работу со следующими доменами:
ru.host3.loc
en.host3.loc
host3.loc

Обработкой должна заниматься одна CMS, то есть грубо говоря все запросы идут на index.php в корне хоста.

Необходимо на уровне сервера получить такой результат:
ru.host3.loc => $_GET('lang'=>'ru')
en.host3.loc => $_GET('lang'=>'en')
Кроме того должны передаваться и другие параметры, в виде ЧПУ, пример:
http://ru.host3.loc/dir/qwerty.html
результат для CMS:
$_GET( [lang] => 'ru', [cat] => 'dir', [page] => 'qwerty')

или
http://ru.host3.loc/qwerty.html
результат для CMS:
$_GET( [lang] => 'ru', [page] => 'qwerty')

Для этого в ".htaccess" прописал следующие условие:
RewriteEngine On

RewriteCond %{HTTP_HOST} ^([a-z0-9_\-]+).host3.loc [NC]
RewriteRule ^(.*)$ index.php?lang=%1 [QSA]

RewriteCond %{REQUEST_URI} ^/(.*)/(.*)\.html$ [NC]
RewriteRule ^(.*)$ ?cat=%1&page=%2 [QSA,L]

RewriteCond %{REQUEST_URI} ^/(.*)\.html [NC]
RewriteRule ^(.*)$ ?page=%1 [QSA,L]
Все вроде нормально, но первое условие делает пере направление всех запросов, и если делается запрос вида:
http://ru.host3.loc/test.jpg
тоже применяется условие и картинка не открывается.
Работает вариант:
http://host3.loc/test.jpg
но здесь получается, что картинка открывается с другого домена, что не очень хороший вариант.

Есть ли какие-то вариант решения этой задачи, да и в целом интересует как решить задачу многодоменности на одной CMS (сама CMS сейчас не может опознавать домены).
 

AmdY

Пью пиво
Команда форума
scorpion-ds
а зачем здесь вообще mod_rewrite? для виртуального хоста пропиши чтобы домен и поддомены имели один документ рут, а уже в php пароль $_SERVER['HTTP_HOST']
 

scorpion-ds

Новичок
scorpion-ds
а зачем здесь вообще mod_rewrite? для виртуального хоста пропиши чтобы домен и поддомены имели один документ рут, а уже в php пароль $_SERVER['HTTP_HOST']
Документ рут и так один и тот же, в целом сейчас в планах как раз отличать языковые версии/сайт по $_SERVER['HTTP_HOST'] и даже полностью отказаться от преобразований mod_rewrite, передавать в CMS url какой есть, а там она сама с ним разбирается, но для этих целей надо писать роутер урлов в CMS.

Сейчас же хотелось, по быстрому решить это вопрос с минимумом изменений.

Сейчас у нас вообще такие правила:
RewriteRule ^(ru|en|ua)/([a-z0-9_\-]+)\.html$ ?lang=$1&page=$2 [QSA,L]
То есть входит URL:
http://mozaik-evand.loc/ru/testirovanie.html
получаем:
http://mozaik-evand.loc/?lang=ru$page=testirovanie

я планировал добавить "правильное" правило в начало .htaccess для преобразования доменов, а далее стандартные правила.
 

NeD

Новичок
Добавь в .htaccess сразу после RewriteEngine On
Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
 

scorpion-ds

Новичок
Тем не менее решил возложить обработку ЧПУ на CMS, так как некоторые правила могут задаваться динамически, типа вход на сайт "ru.site.com" или "site.com/ru/" или к примеру в зависимости от установленных модулей, потому .htaccess по всей видимости будет выглядит вроде такого:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?uri=$1 [L,QSA]
 
Сверху