我在 CentOS 7 服务器上运行了一个 vhost,它为 2 个 Prestashop 商店提供服务。
在这个 vhost conf 文件中,我有一个 ServerName 和一个 ServerAlias,每个都指向一个专用商店。
最近我将两个商店都移到了 HTTPS,但仍然存在一个问题:我知道如何重写 URL 以从 HTTP 重定向到 HTTPS,但我可以根据客户端要求的 URL 进行重定向吗?
我知道如何使用 2 个 vhost 来实现这一点,但是由于配置几乎相同,所以我只想使用一个文件来实现这一点。
示例:将同一个 Vhost conf 文件中的所有内容重写http://store1.example.com
为https://store1.example.com
AND 。http://store2.example.com
https://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>