Я помню, что имел дело с теми же проблемами некоторое время назад. Я хотел убедиться, что некоторые страницы были через https, а остальные использовали http. Я также хотел быть уверен, что как только посетитель покинет защищенную страницу для страниц, которые не должны быть безопасными, он вернется к http. Для этого я исследовал два варианта:
Первый вариант состоял в том, что я мог использовать бесплатный проект .NET URLRewriter для перезаписи определенных страниц, указанных в файле конфигурации:
# HTTP REQUIRED PAGES
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !(/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ http://%3$1 [R=301,L]
# HTTPS REQUIRED PAGES
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} (/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ https://%3$1 [R=301,L]
Используя эту конфигурацию, я могу гарантировать безопасность только двух страниц, в то время как остальные будут небезопасными. У меня были хорошие результаты с этой опцией.
Второй вариант появился после того, как я нашел полное решение, предназначенное для решения именно этой проблемы. Компания SanibelLogic имеет продукт под названием SSLRedirect . Это решение на основе HTTPModule делает именно то, что мне нужно. Это стоит немного денег, но если вы хотите что-то простое в реализации и управлении, это может оправдать ваши расходы. Они даже предлагают исходный код, если вы хотите отредактировать что-либо об этом ...
Я использовал оба варианта в течение многих месяцев, но в итоге я использовал продукт SSLRedirect для его простоты.
Надеюсь, это поможет ...