Настроить автоматическую переадресацию с HTTP на HTTPS с учётом ваших требований можно с помощью JavaScript и проверки на стороне клиента. Это позволит определить, поддерживает ли браузер HTTPS, и соответственно перенаправить пользователя на HTTPS, если это возможно. Для серверной части настройки могут различаться в зависимости от вашего веб-сервера (Apache, Nginx и т. д.), но основная логика останется общей.
Вот пример возможной реализации на стороне клиента:
1. **Создание точки входа для HTTP**: На сервере должен быть доступен HTTP-адрес, который будет обрабатывать входящие запросы.
2. **Добавление скрипта на страницу HTTP**: Для каждой страницы вашего сайта, доступной по HTTP, добавьте следующий JavaScript-код в `<head>`:
```html
<script>
if (window.location.protocol !== "https:") {
// Проверка поддержки HTTPS
const supportsHttps = (function() {
const testUrl = location.href.replace(/^http:/, 'https:');
return new Promise((resolve) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', testUrl, true);
xhr.timeout = 2000; // Установим таймаут в 2 секунды
xhr.onload = () => resolve(true);
xhr.onerror = () => resolve(false);
xhr.send();
});
})();
supportsHttps.then((isSupported) => {
if (isSupported) {
window.location.href = window.location.href.replace(/^http:/, 'https:');
}
});
}
</script>
```
Этот скрипт выполняет следующее:
- Проверяет, используется ли протокол HTTP.
- Пытается сделать GET-запрос к тому же URL, но с протоколом HTTPS.
- Если запрос успешен (браузер поддерживает HTTPS), происходит переадресация на HTTPS-версию сайта.
3. **Настройка контента**: Убедитесь, что содержимое на версиях HTTP и HTTPS различное, как вы указали.
4. **Серверные настройки (опционально)**: Вы также можете настроить 301 редиректы на сервере для браузеров, которые поддерживают HTTPS, но только в том случае, если HTTP содержимое не имеет приоритетов и не нужно для поддержки старых браузеров.
### Server-Side Configuration
На уровне вашего веб-сервера вы можете добавить условную логику переадресации, но это может быть более сложно и не всегда полностью совместимо с вашими требованиями о поддержке устаревших браузеров. Лучше всего использовать клиентский подход, который вы можете адаптировать в зависимости от специфики вашего сайта.
### Итог
Поскольку основная логика переадресации происходит на стороне клиента через JavaScript, это обеспечивает нужное поведение без ненужной сложности, и, кроме того, это позволяет избежать проблем с браузерами, не поддерживающими HTTPS.