.htaccess - Как установить SSL на определенных страницах (необходимо изменить скрипт) - PullRequest
4 голосов
/ 26 августа 2011

У меня включена поддержка ssl на всем веб-сайте, но мне нужно принудительно настроить все страницы, кроме login.php и register.php на http://

Так что в основном мне нужны только страницы login.php и register.php, чтобы быть https: // protocol-ed.

Сейчас у меня есть скрипт, который делает login.php страницу https: // зашифрован, но я не понимаю, как добавить register.php к этому коду

Options +FollowSymLinks 
RewriteEngine On

RewriteBase /

# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/login\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/login\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Любые идеи о том, как редактировать / создавать этот код для установки страниц login.php и register.php на https: //, а всех остальных на http://

Спасибо

1 Ответ

6 голосов
/ 26 августа 2011

Если вы немного знакомы с mod_rewrite и регулярным выражением, у вас не должно возникнуть проблем при чтении этих правил - присутствуют комментарии, объясняющие, что делает конкретное правило. остальное - основы регулярных выражений:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# force https for /login.php and /register.php
RewriteCond %{HTTPS} =off
RewriteRule ^(login|register)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|css|js)$ - [NC,L]

# force http for all other URLs
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/(login|register)\.php$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  1. Эти правила необходимо поместить в .htaccess в корневой папке веб-сайта ПЕРЕД любыми другими правилами перезаписи (если таковые имеются). При размещении в другом месте может потребоваться небольшая настройка.

  2. Они будут

    • сила HTTPS для /login.php и /register.php,
    • ничего не делать для изображений, стилей CSS и файлов JavaScript (точнее, для файлов с этими расширениями)
    • и заставит HTTP для всех других URL
  3. Вы можете легко добавить другие URL-адреса в этот список - просто отредактируйте существующее правило, добавив в список дополнительное имя файла (тот же текст в 2 местах: 1), чтобы принудительно 2) исключить)

  4. Имена файлов чувствительны к регистру. Таким образом, эти правила не будут работать, если запрошено /LOGIN.php (Apache также не будет его обслуживать, поскольку Linux является чувствительной к регистру ОС ... поэтому здесь не о чем беспокоиться).

  5. Очевидная вещь: mod_rewrite должен быть включен, а файлы .htaccess должны обрабатываться Apache (некоторые хостинговые компании отключают их по соображениям производительности и безопасности).

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