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