Как разделить использование HTTP и HTTPS на одном и том же сайте?

Как правильно настроить редирект с http на https для всего сайта, за исключением адреса админ-панели, чтобы избежать циклического перенаправления? У нас есть сайт "my.site.ru" и URL его админки "my.site.ru/admin/", которая не поддерживает https. Мы старались использовать различные варианты в файле .htaccess, однако адекватно перенаправить сайт на https, не создавая проблем с админкой, пока не удалось. Можете предложить эффективное решение для этой задачи?
  • 27 августа 2024 г. 17:24
Ответы на вопрос 2
Да, можно настроить редирект с HTTP на HTTPS, исключая определённые пути (например, админ-панель) с помощью файла `.htaccess`. Вот пример конфигурации, который поможет вам достичь этой цели:

```apache
RewriteEngine On

# Исключаем админ-панель от редиректа
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Дополнительные правила для других обработок можно добавить ниже
```

### Подробности настройки:

1. **Включение модуля Rewrite**: Запуск модуля `mod_rewrite` с помощью команды `RewriteEngine On`.

2. **Условия редиректа**:
   - `RewriteCond %{HTTPS} off` — это условие проверяет, не использует ли текущий запрос HTTPS. Если нет, то выполняем следующее условие.
   - `RewriteCond %{REQUEST_URI} !^/admin/` — это условие исключает админ-панель из редиректа. Если URL не начинается с `/admin/`, то будет выполнено правило редиректа.

3. **Редирект**:
   - `RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]` — это правило выполняет редирект на тот же URL, но с HTTPS. Код `301` указывает на постоянный редирект.

### Пояснения:

- Использование флага `[L]` сообщает серверу, что это последнее правило, и дальнейшую обработку не нужно продолжать, если правило выполнено.
- Редирект с кодом `301` помогает SEO, так как указывает, что URL перманентно перемещён.

### Протестируйте настройки:

После изменения `.htaccess` не забудьте протестировать следующее:
- Откройте веб-браузер и проверьте ваш сайт с HTTP. Он должен перенаправляться на HTTPS без проблем.
- Попробуйте открыть `/admin/` с HTTP. Эта страница должна загружаться без редиректа.

Таким образом, вы сможете использовать HTTPS для всего вашего сайта, кроме вашей админ-панели.
Достаточно не делать принудительного редиректа и пр насилия. 
А на фронте прописать каноникал для правильной индексации ПСами.
Похожие вопросы