HTTPS только на определенной странице с .htaccess - PullRequest
2 голосов
/ 29 января 2011

У меня есть URL, такой как http://www.domain.com/index.php?p=register.Я хочу перенаправить его для использования HTTPS (SSL) с .htaccess, но только на этой и нескольких других страницах (страница входа и т. Д.), Но не на весь сайт.URL-адреса не указывают на каталоги, но используются для динамического включения различных файлов.

Может кто-нибудь дать мне указатель или пример того, как перенаправить одну страницу на HTTPS, пожалуйста?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 30 января 2011

Не htaccess, но другим способом может быть использование PHP для перенаправления:

<?php

$redirectlist = array('register','login','myaccount');

if (in_array($_GET['p'], $redirectlist) && strtolower($_SERVER['HTTPS']) != 'on') {
    exit(header("location: https://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}"));
}

?>

Единственная причина, по которой я упоминаю это, заключается в том, что в некоторых случаях это может быть проще в обслуживании, чем отдельный htaccess.Вам нужно будет поместить это в ваш контент PHP перед выводом любого текста (см. header () ).

3 голосов
/ 29 января 2011

примерно так должно работать:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (^|&)p=(register|login|or|other|protected|page)($|&)
RewriteRule (.*) https://www.domain.com/index.php [R=301,QSA,L]

Некоторые объяснения:

  1. Проверьте, не отличается ли порт сервера от 443 (стандарт для защищенных соединений), чтобы убедиться, что мы будем перенаправлять только незащищенные соединения
  2. Строка запроса (все после?) Должна соответствовать шаблону: включить переменную p с одним значением из списка, разделенного конвейером
  3. Перенаправление всего в защищенный домен, отправка статуса ответа 301, добавление всей строки запроса и маркировка - как последнее правило, поэтому любые правила ниже этого не будут анализироваться (так как это перенаправление, мы не хотим предпринимать никаких других действий )
1 голос
/ 10 апреля 2011

Если у вас есть возможность использовать метод php, я бы порекомендовал следовать этому или другим динамическим языкам.Вы должны избегать использования htaccess, так как ссылки на изображения, js и другие контакты на этой странице будут вынуждены быть nonSSL, и современные браузеры будут показывать знак несоответствия, который может выглядеть как побелка по сравнению с вашей стоимостью SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...