重定向到使用单一规则在 OVH 和 Azure 上的 HTTPS



我正在创建一个简单的网站,我想在OVH和Azure上托管,以测试它是否可以在这两种环境中工作。 我正在为.htaccess而苦苦挣扎。 当我添加下面的代码时,它会正确地将 HTTP 重定向到 OVH 上的 HTTPS:

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

但这在 Azure 上不起作用。在那里,我必须使用以下代码(在此处找到(:

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{HTTP:X-ARR-SSL} ^$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

但这不适用于 OVH。
我想将这些规则统一为一个,这样它就可以在两种环境中工作。
统一的原因是我使用的是将相同代码部署到两个环境的 CI 服务器。

我试过这些重写康德:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-ARR-SSL} ^$
RewriteCond %{SERVER_PORT} 80

但没有运气。这可能吗?

我假设您将有两个单独的主机名,因此如果您有 Apache 2.4,您可以轻松地添加到 if else 语句中。

例如

<If "%{HTTP_HOST} == 'foo'">
RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</If>
<Else>
RewriteEngine On 
RewriteCond %{HTTP:X-ARR-SSL} ^$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</Else> 

最新更新