https для главного домена, http для ЛЮБЫХ поддоменов

korvin222

Мой дом здесь!
Регистрация
24 Окт 2012
Сообщения
311
Реакции
245
Всем привет! Есть домен второго уровня, к которому подключен SSL. В .htaccess прописан следующий код для его работы на https:
Скрытое содержимое доступно для зарегистрированных пользователей!


Так же на хостинге настроена работа и отображение ЛЮБЫХ поддоменов (к примеру spb.site.ru) с подключением на основной домен (мультирегиональность с подключением базы данных и пр.).

Но ввиду того, что городов поддоменов будет более 100, то у бегета не получится подключить бесплатный сертификат на такое количество (ограничение в 40 поддоменов), да и в панели много места будут занимать.

Можно ли прописать, чтобы домен второго уровня так и остался с https, а ЛЮБЫЕ поддомены открывались с http (чтобы не нужно было прописывать каждый отдельно в .htaccess)?

Буду очень благодарен за ответ!
 
Можно ли прописать, чтобы домен второго уровня так и остался с https, а ЛЮБЫЕ поддомены открывались с http (чтобы не нужно было прописывать каждый отдельно в .htaccess)?
В принципе можно пошаманить так:
Код:
# Тут проверяем второго ли уровня домен
RewriteCond %{HTTP_HOST} ^(www\.)?site.ru$
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Можно оставить только верхние правила, а можно попробовать дописать такое:
# Тут проверяем НЕ является ли домен второго уровня, и если не является - редиректим на HTTP
RewriteCond %{HTTP_HOST} ^!(www\.)?site.ru$
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
прописал - теперь с любого поддомена редиректит на домен второго уровня. А нужно, чтобы так и оставался поддоменом, но без https
Рабочий пример, где сейчас прописал ваш код:
pkmegapolis.ru - домен второго уровня
msk.pkmegapolis.ru - поддомен
 
прописал - теперь с любого поддомена редиректит на домен второго уровня. А нужно, чтобы так и оставался поддоменом, но без https
Рабочий пример, где сейчас прописал ваш код:
pkmegapolis.ru - домен второго уровня
msk.pkmegapolis.ru - поддомен
Интересненько. Ну да ладно. Тогда пробуем 2 вещи:
1) Ставим в .htaccess только этот код и смотрим будут ли работать поддомены. Работать они "должны", так как правило цепляет "только" основной сайт
Код:
# Тут проверяем второго ли уровня домен
RewriteCond %{HTTP_HOST} ^(www\.)?pkmegapolis\.ru$
RewriteCond %{ENV:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2) Если поддомены работают - добавляем после первого куска вот этот:
Код:
# Тут проверяем субдомен ли прилетел, после первого правила:
RewriteCond %{HTTP_HOST} ^(.+)\.site.ru$
RewriteCond %{ENV:HTTPS} on
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

А вот если после первого правила субдомены всё-равно не работают - покажи пожалуйста весь файл. Там либо другие правила, либо настройки хостинга.

PS: А если выключить оба блока правил - субдомены с http работают?
 
Получилось!
Оговорка: если в панели администратора создать пункт меню с городом, который создан в базе данных компонента мультирегиональности при прописанном элиасе поддомена - то тогда получается (пример на pkmegapolis.ru в выпадающем меню справа - moskva.pkmegapolis.ru).

Но если не создавать никаких поддоменов в базе данных компонента, то и идёт редирект на главный домен. Т.е. это фича компонента мультирегиональности.

В общем, благодарю за верный код для htaccess - всё успешно!
 
Последнее редактирование:
Возникла ещё одна трудность! Если подскажите, как сделать - респект!
При установке специального модуля для выбора города, при выборе города он подменяет текущее месторасположение на странице и добавляет к главному домену поддомен. Т.о. получается ссылка вида
Код:
https://moskva.pkmegapolis.ru/статьи/kontakty[code]
А нужно, чтобы редиректило со всех поддоменов на http в обязательном порядке, а на главном домене так и оставался https.
 
А нужно, чтобы редиректило со всех поддоменов на http в обязательном порядке, а на главном домене так и оставался https.
Ну, для того что б формировалась ссылка сразу с http - нужно ковыряться в модуле. Но если поддомен доступен и с http и с https, можно добавить вот такой редиерект, который будет срабатывать только на поддоменах:
Код:
RewriteCond %{HTTP_HOST} ^(.+)\.site.ru$
RewriteCond %{ENV:HTTPS} on
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
Редирект нужен с Для просмотра ссылки Войди или Зарегистрируйся на Для просмотра ссылки Войди или Зарегистрируйся ?
Видимо, так:
RewriteCond %{HTTP_HOST} ^(.*)?\.pkmegapolis\.ru$
RewriteCond %{ENV:HTTPS} on
RewriteRule .* Для просмотра ссылки Войди или Зарегистрируйся [L,R=301]

Но я бы посмотрел еще что за модуль - нет ли там соответствующих настроек (или поправить его код).
 
оба варианта не подошли. Пробовал их отдельно с тем постом от UJy, который у меня заработал. А так же вместе с ним. Компилировал правила. Результат один - при заходе на Для просмотра ссылки Войди или Зарегистрируйся не идёт редирект на Для просмотра ссылки Войди или Зарегистрируйся (а самого сертификата ssl для поддоменов нет и не будет).

Нужно их всегда насильно перенаправлять, не давая возможность именно поддоменам отображаться на https.

В настройках самого модуля покопаться не вариант - его файлы закодированы (для покупки лицензии).

Может можно другой код прописать? Напомню - сам pkmegapolis.ru должен быть всегда с https://
 
при заходе на Для просмотра ссылки Войди или Зарегистрируйся не идёт редирект на Для просмотра ссылки Войди или Зарегистрируйся
Вопрос: а поддомен доступен и по http и по https?
И ещё вопрос: если написать правило
Код:
RewriteRule .* /123 [R=301,L]
И зайти на поддомен - средиректит ли с поддомена на /123 ? Может на поддоменах текущий htaccess не срабатывает?
 
Назад
Сверху