Как передать имя поддомена, используя .htaccess, в скрипт, не затирая остальные параметры?

Делаю виртуальные поддомены с помощью

RewriteCond %{HTTP_HOST} ^test\.example\.com$
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.*)$ ?sub=test [L]

RewriteCond %{HTTP_HOST} ^demo\.example\.com$
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.*)$ ?sub=demo [L]


Не универсально, да...

Проблема в том, что если передаю GET параметры, они затирались. Сделал следующим образом
RewriteCond %{HTTP_HOST} ^test\.example\.com$
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.*)$ ?sub=test&%{QUERY_STRING} [L]


Получится условно такая трасформация
http://test.example.com/?q1=1&q2=2
в
http://example.com/?sub=test&?q1=1&q2=2

Не совсем красиво "&?", но работает.

Следующим шагом, хотел прикрутить данный "хак" с готовой CMS, но возник конфликт правил
example.com/user/admin/, открывает профиль, приходят GET данные
[subaction] => userinfo
[user] => admin


test.example.com/user/admin/, открывает главную, приходят GET данные
[test] => test

Мои правки стоят до правила обработки
RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]


Соответственно, если поменять местами
test.example.com/user/admin/, открывает профиль, приходят GET данные
[subaction] => userinfo
[user] => admin

но теперь отваливаются мои данные о поддомене
  • Вопрос задан
  • 2741 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы