1

我的主机帐户上有多个插件域。我想将主域的非 https 重定向到 https,并且只重定向一个附加域。

我遇到的问题是 www.firstaddondomain.com 没有重定向到https://www.firstaddondomain.com。相反,它似乎根本没有重定向。它停留在 www.firstaddondomain.com。

注意:我不想将所有 http 重定向到 https。我有另一个我不想重定向到 https 的插件域。

这是我的 .htaccess 文件的样子:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?maindomain\.com$ [NC]
RewriteRule ^$ https://www.maindomain.com/$1 [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?firstaddondomain\.com$ [NC]
RewriteRule ^$ https://www.firstaddondomain.com/$1 [R,L]

更新:感谢您的回答,阿努巴瓦。我的第一个插件域实际上是一个 .org 域,所以我更新的 .htaccess 文件与您的答案略有不同。

这是我更新的 .htaccess 文件

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?firstaddondomain\.org$ [NC]
RewriteRule ^ https://www.firstaddondomain.org%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?maindomain\.com$ [NC]
RewriteRule ^ https://www.maindomain.com%{REQUEST_URI} [R=302,L,NE]
4

2 回答 2

4
  • 您的正则表达式没有捕获$1
  • 两个规则可以合并为一个

您可以使用:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(maindomain|firstaddondomain)\.com$ [NC]
RewriteRule ^ https://www.%1.com%{REQUEST_URI} [R=302,L,NE]

确保此规则是您的第一条规则,并放在DocumentRoot/.htaccess两个域中。

于 2014-12-19T15:59:36.933 回答
0

可能会根据您的托管条件而有所不同,但是在 Godaddy 共享托管环境中并且没有通配符 SSL,即单域 SSL 证书。这是唯一能够从强制 HTTPS 重定向中排除附加域的配置:

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(www\.)?ADDON_DOMAIN\.com$ [NC] RewriteRule .* - [L]
# 这是必不可少的,以确保在导航到附加域后不再应用
RewriteCond %{HTTPS} off
其他条件再一次 #
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

于 2015-11-14T23:38:04.387 回答