Как разграничить http и https на одном сайте?

Вопрос про редирект с http на https сайта целиком, кроме адреса его админ-панели.
Есть сайт "my.site.ru" и URL его админки: "my.site.ru/admin/". Админка "не дружит" с https (да, это ненормально, но уж как есть).
Поэтому нужно разграничить: сайт работает строго по https, а админка - строго по http.

Испробованные варианты в .htaccess типа:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} ^/admin/$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]


- в лучшем случае да, отлично заворачивают весь сайт на https, но в то же время отправляют админку в постоянное "Циклическое перенаправление".

Может быть, есть какой-то гарантированно рабочий вариант такого разграничния?
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
@annd2 Автор вопроса
Решение:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST}    !^\S+\s/admin
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kkidd
Такая связка должна сработать

RewriteEngine On

# пробрасываем на хттп для /admin
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^(.*)$ http://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L]

# на всё остальное кидаем хттпс
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/admin
RewriteRule ^(.*)$ https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L]


https://your.example.org/admin - редирект на хттп
your.example.org/admin - нет редиректа
your.example.org/other - редирект на хттпс
https://your.example.org/other - нет редиректа
Ответ написан
Ваш ответ на вопрос

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

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