我正在创建一个简单的网站,我想在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>