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

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

У меня есть виртуальный хост, работающий на сервере 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>