Как гарантировать, что Apache всегда обслуживает одну страницу через HTTPS?

StackOverflow https://stackoverflow.com/questions/2292919

Вопрос

Я хотел бы перенаправить все соединения с 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 это реальный файл на сервере (а не другой редирект).Options FollowSymLinks присутствует в соответствующей директиве Directory.

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

Это было полезно?

Решение

Что-то вроде следующего позволит вам перенаправлять страницы, отличные от 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]

Флаг [OR] после RewriteCond буквально означает "или", вот почему в последнем условии его нет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top