使用 ServerAlias 进行 Apache URL 重写

使用 ServerAlias 进行 Apache URL 重写

我在 CentOS 7 服务器上运行了一个 vhost,它为 2 个 Prestashop 商店提供服务。
在这个 vhost conf 文件中,我有一个 ServerName 和一个 ServerAlias,每个都指向一个专用商店。

最近我将两个商店都移到了 HTTPS,但仍然存在一个问题:我知道如何重写 URL 以从 HTTP 重定向到 HTTPS,但我可以根据客户端要求的 URL 进行重定向吗?

我知道如何使用 2 个 vhost 来实现这一点,但是由于配置几乎相同,所以我只想使用一个文件来实现这一点。

示例:将同一个 Vhost conf 文件中的所有内容重写http://store1.example.comhttps://store1.example.comAND 。http://store2.example.comhttps://store2.example.com

答案1

您可以只使用 apache 设置的 HTTP_HOST 变量:

<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>

相关内容