Перезапись URL-адресов Apache с помощью ServerAlias

Перезапись URL-адресов Apache с помощью ServerAlias

У меня есть vhost, работающий на сервере CentOS 7, который обслуживает 2 магазина Prestashop.
В этом файле конфигурации vhost у меня есть ServerName и ServerAlias, каждый из которых указывает на выделенный магазин.

Недавно я перевел оба магазина на HTTPS, но остался один вопрос: я знаю, как переписать URL для перенаправления с HTTP на HTTPS, но могу ли я сделать перенаправление на основе URL, запрошенного клиентом?

Я знаю, как это сделать с двумя виртуальными хостами, но поскольку конфигурация будет практически идентичной, я хотел сделать это только с одним файлом.

Пример: переписать http://store1.example.comна https://store1.example.comAND 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>

Связанный контент