HTTPS子域名重定向到HTTPS主域名

3

我一直在尝试为我的会员门户网站添加通配符SSL证书,但是遇到了问题。我认为可以在.htaccess文件中轻松解决问题。

我的主域名是www.rawtillwhenever.com,子域名是members.rawtillwhenever.com。

我没有为主域名构建安全证书,今天刚刚添加了它。我通过Bluehost购买了通配符证书,然后使用WordPress插件“Really Simple SSL”将其添加到了网站上。

我已经将会员门户网站的站点URL更改为https,但它(https//members.rawtillwhenever.com)仍然重定向到https//rawtillwhenever.com。

如果我尝试访问http//members.rawtillwhenever.com(不使用https),它仍然会重定向到https//rawtillwhenever.com。

我联系了Bluehost支持部门,他们给了我这份文档。 https://my.bluehost.com/cgi/help/766

主域名位于子文件夹/public_html/rawtillwhenever/中,而子域名位于/public_html/rawtillwhenever/members/中。

当我使用http/https头检查时,返回以下内容:

HTTP/1.1 301 Moved Permanently => 
Date => Sun, 14 May 2017 20:04:11 GMT
Server => Apache
Location => https://www.rawtillwhenever.com/
Cache-Control => max-age=3600
Expires => Sun, 14 May 2017 21:04:11 GMT
Vary => Accept-Encoding,User-Agent
Content-Length => 0
Connection => close
Content-Type => text/html; charset=UTF-8

子域名的 .htaccess 文件如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

如果有人能帮我,那就太好了,否则我会支付你的时间费用来解决它。

编辑 已更新子域的.htaccess文件如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$`
RewriteCond %{REQUEST_URI} !^/members/
RewriteRule ^(.*)$ /members/$1
RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$`
RewriteRule ^(/)?$ members/index.php [L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

仍然出现重定向问题


我不得不从网址中删除冒号,因为在stockoverflow问题中我只能发布2个活动链接。 - Derek Howlett
2个回答

0

我也遇到了这个问题,以下是我在nginx网站上找到的信息:

https://nginx.org/en/docs/http/configuring_https_servers.html

通过这个配置,浏览器会接收到默认服务器的证书,即使请求的服务器名称是www.example.com。这是由于SSL协议的行为导致的。在浏览器发送HTTP请求之前,SSL连接已经建立,nginx并不知道请求的服务器名称。因此,它只能提供默认服务器的证书。
编辑:对我来说,SNI似乎无法解决这个问题,如果我尝试对默认站点使用SSL,它会直接转到配置的具有SSL的服务器。我更希望它失败,但我目前找不到任何方法让它这样做。
这表明也许可以使用SNI允许浏览器在握手之前传递服务器名称。我认为这一切都是由于SSL加密发生在一个应用程序没有支持的地方,它根本无法在通道上进行“通信”。另外,上面的例子中提到了默认服务器的证书,但在他们的例子中,他们没有列出默认服务器。在我遇到问题的服务器上,主站点是默认的,所以这部分可能不重要。

0

我不确定你的具体配置,但你可能正在寻找类似这样的东西:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$`
RewriteCond %{REQUEST_URI} !^/members/
RewriteRule ^(.*)$ /members/$1
RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$`
RewriteRule ^(/)?$ members/index.php [L]

之后,请尝试清除浏览器缓存以强制执行新规则。

希望这可以帮到您!:)


将.htaccess代码更新为以下内容:RewriteEngine On RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$ RewriteCond %{REQUEST_URI} !^/members/ RewriteRule ^(.*)$ /members/$1 RewriteCond %{HTTP_HOST} ^members.rawtillwhenever.com$ RewriteRule ^(/)?$ members/index.php [L]# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule># END WordPress仍然收到重定向。 - Derek Howlett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接