Вопрос или проблема
У меня есть конкретный URL, который должен быть доступен без SSL, чтобы некоторые старые устройства могли получить к нему доступ. Причина в том, что у этих старых устройств этот URL закодирован в программе.
Мой .htaccess выглядит так:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Redirect 301 /server http://sub.domain.com/server
Тем не менее, устройства не могут даже получить доступ к первому URL, поскольку он постоянно перенаправляется на https://domain.com/server
Ваш URL http://domain.com/server должен работать без проблем. Скорее всего, вы активировали перенаправление на HTTPS для вашего сайта.
Вам стоит проверить:
- Есть ли у вас плагин безопасности или другого типа, который заставляет перенаправление на HTTPS, и отключить это перенаправление. (Скорее всего, они отредактируют ваш файл .htaccess, чтобы принудительно включить HTTPS)
- Проверьте файл .htaccess на наличие пользовательского фрагмента, который заставляет перенаправление на HTTPS
- Проверьте настройки вашего хостинга. Возможно, перенаправление на HTTPS активировано оттуда.
Ответ или решение
Чтобы отключить перенаправление SSL для определённого URL, необходимо внести изменения в файл .htaccess
, который является конфигурационным файлом для веб-сервера Apache. Учитывая, что у вас уже имеется базовая настройка с правилами переписывания и редиректами, я предоставлю подробные инструкции, которые помогут решить вашу проблему с доступом старых устройств.
Шаги по отключению перенаправления SSL для конкретного URL
-
Проверка общего перенаправления: Убедитесь, что у вас нет настроенного глобального правила перенаправления всего HTTP-трафика на HTTPS. Для этого необходимо внимательно изучить файл
.htaccess
, а также любые плагины или настройки вашего хостинга, которые могут принудительно переводить сайты на безопасный протокол. -
Изменение файла .htaccess: Внесите следующие изменения в ваш файл
.htaccess
, чтобы исключить конкретный URL из перенаправления на HTTPS. Вот пример, как это может выглядеть:RewriteEngine On RewriteBase / # Исключить /server из редиректа на HTTPS RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} ^/server$ RewriteRule ^ - [L] # Обычное перенаправление на HTTPS для всех остальных URL RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Остальные правила RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] Redirect 301 /server http://sub.domain.com/server
В этом изменении мы добавили условия, которые проверяют, не является ли запрашиваемый URI
/server
, и если это так, мы позволяем запросу пройти без перенаправления на HTTPS. -
Тестирование изменений: После внесения этих изменений в файл
.htaccess
, обязательно протестируйте доступ к URLhttp://domain.com/server
с устройств, которые ранее не могли подключиться. Это позволит убедиться, что новое правило работает корректно. -
Проверка наличия других источников конфигурации: Если после внесения изменений в файл
.htaccess
перенаправление всё равно продолжается, проверьте:- Назначенные плагины: Некоторые плагины безопасности могут автоматически добавлять правила HTTPS. Деактивируйте их, если необходимо.
- Хостинг: Обратитесь к панелям управления или документации вашего хостинга для поиска настроек, которые могут перенаправлять трафик на HTTPS.
Заключение
Следуя описанным шагам, вы сможете отключить перенаправление SSL для конкретного URL, что позволит вашим старым устройствам успешно получать доступ к нужному ресурсу. Важно заботиться о безопасности, но в вашем случае необходимость поддержания работоспособности устаревших устройств требует таких исключений. Если после всех этих попыток проблема не решится, возможно, стоит обратиться за дополнительной помощью к вашему хостинг-провайдеру или специалисту по веб-разработке.