Доступ к сайту только по HTTP кроме 2 страниц - PullRequest
1 голос
/ 11 февраля 2012

Мне нужна помощь с пользователями, получающими доступ к моему сайту через HTTPS. Я хочу, чтобы только 2 страницы были доступны через HTTPS. Все остальные страницы должны быть доступны только по HTTP, и если пользователь пытается получить доступ к странице через HTTPS, он перенаправляет их на версию HTTP этой страницы. Я пробовал несколько файлов .htaccess, но не могу заставить их работать.

Любая помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Добавьте это к .htaccess файлам и поместите его в DocumentRoot вашего каталога.

RewriteEngine on
RewriteBase /

Rewritecond %{REQUEST_URI} (?:(?:enroll|Registered)\.php)$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [L,R=301]


RewriteCond %{HTTPS} on
Rewritecond %{REQUEST_URI} !(?:(?:enroll|Registered)\.php)$ [NC]
RewriteRule ^(.*) http://%{HTTP_HOST}/$1 [L,R=301] 

Включите ведение журнала перезаписи:

RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9

Putвышеуказанные 3 строки в вашем virtualhost.перезапустите httpd.

RewriteLogLevel 9 Использование высокого значения для уровня значительно замедлит работу сервера Apache!Используйте файл перезаписи на уровне выше 2 только для отладки!Уровень 9 будет регистрировать почти все детали переписываемого журнала.

сделайте find / -name httpd.conf или find / -name apache.conf или find / -name apache2.conf, чтобы найти, где находится ваш файл conf.Обычно в: /etc/httpd/conf.

Где вы добавили настройки для SSL?SSLCertificateFile SSLCertificateKeyFile SSLCertificateChainFile и т. Д.

1 голос
/ 11 февраля 2012

Пара разных способов:

  1. Вы можете либо разместить некоторую логику на 2 страницах (enroll.php и Registered.php) для перенаправления на HTTPS.

    if ($_SERVER['HTTPS']!=”on”)
    {
        $redirect= “https://”.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        header(“Location:$redirect”);
    }
    
  2. Предполагая, что вы используете Apache Web Server (другие веб-серверы, включая IIS, довольно похожи с механизмом перенаправления), вы можете использовать сопоставление с шаблоном и для этих двух URL-адресов указать перенаправление на HTTPS.

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (enroll.php) https://%{HTTP_HOST}%{REQUEST_URI}
    RewriteRule (Registration.php) https://%{HTTP_HOST}%{REQUEST_URI}
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...