Правильное переключение между HTTP и HTTPS с использованием .htaccess

У нас есть торговый сайт, который мы размещаем на общем хосте (Mediatemple Gridserver). Некоторым частям сайта необходимо использовать HTTPS (checkout и т. Д.), Но остальным следует использовать HTTP.

Кто-нибудь знает, как мы всегда можем принудительно использовать HTTP / HTTPS для определенных URL-адресов? Мы работали в разных штатах, но мы не можем получить запрос на страницу, которая должна быть на HTTP, но запрашивается с HTTPS для правильного переключения.

Я посмотрел вокруг, но не смог найти подходящего ответа на этот вопрос.

Я использую что-то похожее на это для папки admin в wordpress:

#redirect all https traffic to http, unless it is pointed at /checkout RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !^/checkout/?.*$ RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L] 

RewriteCond %{HTTPS} on части может не работать для всех веб-серверов. Например, для моего веб-хостинга требуется RewriteCond %{HTTP:X-Forwarded-SSL} on .

Если вы хотите принудительно выполнить обратное, попробуйте:

 #redirect all http traffic to https, if it is pointed at /checkout RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} ^/checkout/?.*$ RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L] 

Если вам нужны альтернативные способы сделать это, проверьте askapache .

Это должно работать практически во всех сценариях и должно работать в вашем реальном vhost или .htaccess:

 RewriteEngine on RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{SERVER_NAME}/%{REQUEST_URI} [R=301,L] 

(не забывайте косую черту перед% {REQUEST_URI}, поскольку это может позволить пропустить номер порта, что опасно)

 RewriteEngine on RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{SERVER_NAME}/%{REQUEST_URI} [R=301,L] 

У меня была проблема с загрузчиком. Это как я его исправил.

Как указано в этом ответе , исправьте приложение, чтобы использовать ссылки https:// когда это необходимо. Не полагайтесь на автоматическое redirect, это может привести к ложному чувству безопасности, если вы не сделали ваши ссылки / формы поданными через https:// перейдите на https:// URL-адреса тоже. Использование mod_rewrite автоматически затрудняет обнаружение таких ошибок (что также может быть уязвимостью).

Для меня это работало (я использовал его для сайта wordpress и перенаправлял на HTTPS). Вы должны добавить условие и строки правил непосредственно за линиями RewriteEngine и RewriteBase:

 # BEGIN WordPress  RewriteEngine On RewriteBase / # I added these two lines for redirect to HTTPS RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R=301,L] # (end of custom modifications) RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress` 

Посмотрите на условие RewriteCond %{HTTP:X-Forwarded-Proto} !https – только это сработало для моего сервера. (Я также попробовал RewriteCond %{SERVER_PORT} !^443$ или RewriteCond %{HTTPS} off , но безуспешно.

Я думаю, это должно быть:

 RewriteCond %{HTTPS} =on ^/checkout(.*) http://shoppingsite.com/checkout$1 [R] 

См. Документацию mod_rewrite .

  • Java SSL подключиться, добавить серверный сертификат в хранилище ключей программно
  • Где получить сертификаты для Acrobat PDF
  • Сколько накладных расходов накладывает SSL?
  • Предупреждение о подтверждении SSL: ошибка unrecognized_name с момента обновления до версии 1.7.7
  • Как использовать TLS 1.2 в Java 6
  • Вызывается: java.security.UnrecoverableKeyException: невозможно восстановить ключ
  • Получение ошибки сертификата в IE и Chrome, но открывается в FireFox
  • Подключитесь к Postgres через SSL, используя R
  • Facebook JavaScript SDK через HTTPS, загрузка незащищенных элементов
  • Dyld: библиотека не загружена: /usr/lib/libcurl.4.dylib curl Ошибка SSL
  • Игнорирование сертификата SSL в Apache HttpClient 4.3
  • Interesting Posts

    Как я могу ранжировать наблюдения в группе быстрее?

    Загрузить: показать сообщение об ошибке из HTTP-ответа

    Что означают термины «асинхронный» и «синхронный» в отношении определения прерывания?

    Как сериализовать объект в XML без получения xmlns = “…”?

    Как получить html div на другой странице с помощью jQuery ajax?

    В чем разница строк в одиночных или двойных кавычках в groovy?

    Обнаружение вредоносного файла в Chrome

    Есть ли нажатие клавиши, которая может заблокировать заставку Mac OS X?

    Как проверить наличие интернет-соединения в java?

    Woocommerce: Какой крюк для замены устаревшего «woocommerce_add_order_item_meta»

    Используют ли новые ключевые слова C # 5.0 «asynchronous» и «ожидающий» несколько ядер?

    Отображение сервлета с использованием web.xml

    Закрыть Bootstrap Modal

    Копирование данных из одной базы данных SQLite в другую

    Почему сложно тестировать систему, которая зависит от синглетонов?

    Давайте будем гением компьютера.