Как обеспечить, чтобы Apache всегда обслуживал одну страницу через HTTPS? - PullRequest
2 голосов
/ 19 февраля 2010

Я хотел бы перенаправить все соединения с htt_p: //www.example.com/abc.html на HTTP_S: //www.example.com/abc.html. Какие команды mod_alias или mod_rewrite будут работать для этого? Я пробовал:

RewriteEngine on
RewriteCond %{HTTPS} =off
RewriteRule $abc\.html^ https://www.example.com/abc.html [R]

в обоих .htaccess и httpd.conf, но это не работает. Это работает, если первая строка в RewriteRule - что-то еще (например, abz.html), но не если это abc.html. abc.html - это настоящий файл на сервере (не другой редирект). Параметры FollowSymlinks присутствуют в соответствующей директиве Директории.

Большое спасибо.

1 Ответ

1 голос
/ 19 февраля 2010

Что-то вроде следующего позволит перенаправить страницы без SSL на версии SSL (при условии, что вы используете SSL на порту 443):

RewriteEngine on

# Limited redirects
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/abc\.html$ [OR,NC]
RewriteCond %{REQUEST_URI} ^/def\.html$ [OR,NC]
RewriteCond %{REQUEST_URI} ^/ghi\.html$ [NC]
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Флаг [ИЛИ] после RewriteCond буквально означает «или», поэтому последнее условие не имеет его

...