У меня есть виртуальный хост, работающий на сервере CentOS 7, который обслуживает 2 магазина Prestashop.
В этом файле конфигурации vhost у меня есть ServerName и ServerAlias, каждый из которых ведет в выделенный магазин.
Недавно я переместил оба магазина на HTTPS, но остается один вопрос: я знаю, как переписать URL-адрес для перенаправления с HTTP на HTTPS, но могу ли я перенаправить на основе URL-адреса, запрошенного клиентом?
Я знаю, как это сделать с двумя хостами, но поскольку конфигурация будет почти одинаковой, я хотел сделать это только с одним файлом.
Пример: переписать http://store1.example.com
к https://store1.example.com
И http://store2.example.com
к https://store2.example.com
все в том же файле конфигурации Vhost.
Вы можете просто использовать переменную HTTP_HOST, которую устанавливает apache:
<VirtualHost *:80>
ServerName store1.example.com
ServerAlias store2.example.com
RewriteEngine On
RewriteRule ^/?(.*)$ https://%{HTTP_HOST}/$1 [R=301]
</VirtualHost>
Вы можете поместить их в один или несколько файлов по своему усмотрению, но самый простой способ сделать это - использовать несколько файлов. <VirtualHost>
директивы:
<VirtualHost *:80>
ServerName store1.example.com
Redirect permanent / https://store1.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName store2.example.com
Redirect permanent / https://store2.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName store1.example.com
ServerAlias store2.example.com
...
</VirtualHost>