Назад | Перейти на главную страницу

Включение HTTPS через .htaccess

В настоящее время у меня есть сайт, на котором я использую .htaccess для включения https для определенных разделов сайта:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

В папке «оценка» находится несколько файлов, имя которых начинается с слова «покупка», и все они должны быть защищены. Пока это работает.

Теперь мне нужно защитить несколько других файлов и каталогов, однако добавление их в качестве условия перезаписи, похоже, не работает:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteCond %{REQUEST_URI} (another_dir/file.php)
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

Это не поднимает никаких 500 или что-то в этом роде, это просто защитит файлы только при первом условии. Что я делаю не так?

На самом деле, просто просматривая документы 2.2, вы можете сделать следующее:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*) [OR]
RewriteCond %{REQUEST_URI} (another_dir/file.php) [OR]
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

Если это сработает, это гораздо более элегантное решение.

IIRC, RewriteCond - это условие И.

«Если все условия совпадают, обработка продолжается с заменой строки подстановки на URL».

В данный момент вы говорите (HTTPS выключен, И URI - это И URI - это И URI - это), что неверно, поскольку URI не может быть 3 разными вещами одновременно!

Вам нужно комбинированное условие И / ИЛИ (HTTPS выключено И (URI это ИЛИ URI это ИЛИ URI это))

Попробуйте продублировать свое правило:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (another_dir/file.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI}