.htaccess仅针对某些插件域将http重定向到https

时间:2014-12-19 15:53:04

标签: .htaccess redirect https addon-domain

我的托管帐户中有多个插件域。我想将非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]

更新: 谢谢你的回答,anubhava。我的第一个插件域实际上是.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]

2 个答案:

答案 0 :(得分: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中。

答案 1 :(得分:0)

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

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(www\.)?ADDON_DOMAIN\.com$ [NC] RewriteRule .* - [L]
#这是必需,以确保在导航到附加域后不再应用其他条件#
RewriteCond %{HTTPS} off
#现在您已经定义了排除并确保其逻辑与所有其他URI请求无关,必须再次重新建立此条件#
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]