что прописать в htaccess для поддоменов

acelotuse

Профессор
Регистрация
31 Мар 2009
Сообщения
312
Реакции
37
Незнал, как более точно назвать тему, так что не вините.

В общем, ситуация такая.
Сайт на ДЛЕ движке.
Есть основной домен, и есть поддомен. На обоих стоит ДЛЕ. Поддомен планируется использовать как смартверсию. Основной, естественно, как основную версию ПК. Оба используют одну и ту же базу данных, всё, включая новости, комменты, форум, юзеров и т.п.
Использовать стандартную возможность перехода на смартверсию в ДЛЕ не хочу. Она ограничена. Использование поддомена позволит расширить возможности смарт-версии.
Но тут получается загвоздка. А она в следующем.
Все ссылки в базе данных имеют вид Для просмотра ссылки Войди или Зарегистрируйся или же Для просмотра ссылки Войди или Зарегистрируйся, т.е. или с www или без.
На основном домене в корне сайта файл htaccess имеет следующий код:
Код:
RewriteCond %{HTTP_HOST} ^govzpeople83.ru
RewriteRule (.*) http://www.govzpeople83.ru/$1 [R=301,L]
чтобы страницы все имели адрес с www.
Т.е. получается, что находясь на основном домене, все ссылки в новостях, комментах и т.п. будут перебрасывать на www.
Но смартверсия использует ту же базу! И значит если перейти на смартверсию, и нажать на какую нибудь ссылку в новости или комменте, то она автоматически перебросит на основной домен (а не оставит в смартверсии).
Пытался в файле htaccess в смарт-поддомене добавить нечто:
Код:
RewriteCond %{HTTP_HOST} ^govzpeople83.ru
RewriteRule (.*) http://pda.govzpeople83.ru/$1 [R=301,L]
Т.е. как видите, разница в pda. Однако, это не помогло.
В общем, незнаю, передал ли вам суть проблемы или нет, но под конец подытожу:
нужно, чтобы будучи на основном домене действовало правило С ИСПОЛЬЗОВАНИЕМ WWW,
а чтобы будучи на pda-версии, используя ту же базу, все ссылки автоматом становились без www но с PDA.сайт.ру

Заранее всем спасибо за отзывы и советы.

Модеры! Тему создал тут, а не в ДЛЕ, потому что думаю, что реализация скорее в htaccess чем в движке.
 
переменная HTTP_HOST содержит текущий хостнейм запрашиваемого url, т.е. http;//www,sub.site.com/index.php или http;//site.com/index.php
и в случае отдельных .htaccess, правило прописывается для каждого хоста

для поддомена
Код:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.pda\.govzpeople83\.ru$
RewriteRule (.*) http://pda.govzpeople83.ru/$1 [R=301,L]

для домена
Код:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^govzpeople83\.ru$
RewriteRule (.*) http://www.govzpeople83.ru/$1 [R=301,L]
 
Проверил, не помогло. Проблема осталась. Если нахожусь на поддомене pda. то заходя по ссылке вида Для просмотра ссылки Войди или Зарегистрируйся или без www все равно перебрасывает с поддомена на основной.
 
для основного домена:
Код:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?govzpeople83\.ru$
RewriteCond %{HTTP_REFERER} pda\.govzpeople83\.ru
RewriteRule .* http://pda.govzpeople83.ru%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^govzpeople83\.ru$
RewriteRule (.*) http://www.govzpeople83.ru/$1 [R=301,L]

т.е. htaccess домена будет редиректить на сабдомен, если в рефере есть pda.govzpeople83.ru
 
А на поддомен тогда не надо ничего прописывать?
 
получается что да, т.к. это не входит в ТЗ
но если оставить, будет перенаправление всех страниц с www. subdomain на subdomain
 
Спасибо большущее. Работает все именно так, как я и хотел.
Но по незнанию своему теперь столкнулся с новой проблемой. )))
Как теперь сделать, чтобы была возможность переходить с поддомена на домен? Я имею ввиду ссылку для пользователей. Ведь если указать в поддомене ссылку на основной, то она автоматически все-равно перекинет не поддомен. )))
Конечно, есть вариант прописывать в адресной строке браузера, менять www на pda и наоборот. Но это, естественно, не вариант.
Можете что-нибудь посоветовать?
 
в этом случае можно давать ссылку на основной с подзапросом:
site.com/?to_main или site.com/?page&to_main

и при замене
Код:
RewriteCond %{HTTP_REFERER} pda\.govzpeople83\.ru

на
Код:
RewriteCond %{HTTP_REFERER} pda\.govzpeople83\.ru
RewriteCond %{QUERY_STRING} !to_main
# исключения для загрузки на сервер (POST запрос) и для картинок
RewriteCond %{REQUEST_METHOD} !^POST$
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|gif)$ [NC]

подзапрос будет отменять редирект
 
гениально!
Спасибо большое!
Все работает идеально. Переходы между поддоменом и основным доменом работают хорошо, никаких проблем.
Только вот неприятность теперь случилась с модулем загрузок файлов на сервер. Если отключить весь код, указанный выше, то загрузка работает. Так что проблема именно в этом.
Может есть код, который работает в качестве исключений для некоторых типов файлов?
Да, кстати, на всякий случай неплохо было бы использовать код, который не менял бы основной домен на поддомен в путях к изображениям. Можно такое сделать?
Заранее спасибо.
 
Назад
Сверху