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

Перепишите небезопасный домен в безопасный с подстановочным знаком

Я ищу правильный способ обработки перенаправления небезопасных (через порт 80) запросов на безопасный (порт 443) с конфигурацией сервера Apache. Я тоже не хочу помещать это в свой файл .htaccess.

В настоящее время у меня есть это в моем httpd.conf файл:

ServerName example.com
ServerAlias *.example.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$
RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,L]

Цель состоит в том, чтобы выполнить перенаправление с подстановочными знаками (в субдомене и подпапке). Чтобы быть конкретным, вот несколько основных вариантов использования:

 - http://subdomain.example.com to https://subdomain.example.com
 - http://example.com to https://www.example.com
 - http://www.example.com/contact/ to https://www.example.com/contact
 - http://subdomain.example.com/contact/ to https://subdomain.example.com/contact

Короче просто заменив http с участием https при соблюдении двух условий:

Я пробовал множество различных методов, но, к моему большому удивлению, ничто не могло охватить все варианты поддоменов и подпапок.

Любые идеи? Спасибо!

Для перенаправления на HTTPS:

RewriteEngine On

Скидка RewriteCond% {HTTPS}

RewriteRule ^ https: / /% {HTTP_HOST}% {REQUEST_URI}

Но для ssl нужен виртуальный хост:

ИмяVirtualHost *: 443

<VirtualHost *: 443>

ServerName example.com

ServerAlias www.example.com

SSLEngine on

SSLCertificateFile    /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

</ VirtualHost>


Объяснение используемых директив перезаписи мода

RewriteEngine On --- Он включит движок mod_rewrite сервера Apache на

RewriteCond% {HTTPS} выкл. ------

Будет содержать текст «включено», если соединение использует SSL / TLS, или «выключено» в противном случае. (Эту переменную можно безопасно использовать независимо от того, загружен ли mod_ssl). будет оценивать как истинное состояние, если соединение не ssl / tls

RewriteRule ^ https: / /% {HTTP_HOST}% {REQUEST_URI}

это должно сформировать URL-адрес, первоначально запрошенный клиентом, но в https

Простой виртуальный хост - лучший способ перехватить все HTTP-запросы. Тогда вы не сможете случайно перенаправить HTTPS-запросы. Что-то вроде.

<VirtualHost *:80>
   ServerName example.com
   ServerAlias *.example.com

   # Redirect subdomains.
   RewriteEngine on
   RewriteCond %{HTTP_HOST} (\w+.example.com)
   RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

   # Everything else to www.example.com preserving URI path
   Redirect 301 / https://www.example.com/
</VirtualHost