Я перенаправляю все HTTP-запросы для моего поддомена на https, используя следующий код.
<VirtualHost *:80>
ServerName subdomain.example.com
Redirect 302 / https://subdomain.example.com
</VirtualHost>
Теперь моя проблема в том, как это сделать для всех поддоменов.
Например, http: subdomain1.example.com должен перейти на https: subdomain1.example.com, а http: subdomain2.example.com должен перейти на https: subdomain2.example.com.
Как мне сделать это для всех поддоменов, не создавая один виртуальный хост для всех из них
Что приходит в голову, так это использовать mod_rewrite.
Что-то вроде этого :
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)\.example.com$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
Однако обратите внимание, что Apache рекомендует использовать Redirect
для этого в конфигурации виртуального хоста.
Из документа Когда не использовать mod_rewrite :
В случае перенаправления http-to-https использование RewriteRule было бы целесообразным, если у вас нет доступа к основному файлу конфигурации сервера, и вместо этого вы обязаны выполнять эту задачу в файле .htaccess.