php HTTPS子域保持重定向到HTTPS主域

q43xntqr  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(130)

我对这件事感到沮丧,所以我希望有人能帮忙。我认为在.htaccess文件中很容易修复。
我一直在尝试实现通配符SSL证书到我的成员门户。
我的主域名是www.rawtillwhenever.com,子域是members.rawtillwhenever.com
我在没有安全证书的情况下构建了主域,今天只是添加了它。我通过Bluehost购买了通配符证书,然后使用WordPress插件“Really Simple SSL”将其添加到网站。
我已经将会员门户网站的URL更改为包含https,但是它(https//members. rawtillwhere.com)一直重定向到https//rawtillwhere.com
如果我尝试转到http//members. rawtillwhene.com(没有https),它仍然会重定向到https//rawtillwhene.com
我已经联系了bluehost的支持,他们刚刚给了我这个文档。https://my.bluehost.com/cgi/help/766
主域位于子文件夹/public_html/rawtillwhen/中,子域位于/public_html/rawtillwhen/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

如果有人能帮我,那就太好了否则我会付你时间来修它。
EDIT将子域的.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

仍在接收重定向

eeq64g8w

eeq64g8w1#

不确定您的具体配置,但您可能正在寻找的内容如下:

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]

之后,尝试清除浏览器缓存以强制执行新规则。
希望这有帮助!:)

hivapdat

hivapdat2#

我也遇到了这个问题,这是我在nginx网站上找到的:
https://nginx.org/en/docs/http/configuring_https_servers.html
使用此配置,浏览器接收默认服务器的证书,即www.example.com,而不考虑请求的服务器名称。这是由SSL协议行为引起的。SSL连接是在浏览器发送HTTP请求之前建立的,nginx不知道请求的服务器的名称。因此,它可能只提供默认服务器的证书。
编辑:SNI似乎并没有绕过这个问题,对我来说,如果我试图对默认站点使用SSL,它会直接转到配置了SSL的服务器。我宁愿它只是失败,但我找不到任何方法,使它到目前为止。
这表明,也许SNI可以用于允许浏览器在握手之前传递服务器的名称。我认为这都是由于SSL加密发生在一个点上,如果应用程序没有支持,它不能“谈”的渠道。另外,上面的例子说默认服务器的证书,但在他们的例子中没有列出默认服务器。在我的服务器上,我遇到了麻烦,主站点是默认的,所以这部分可能不是材料。

相关问题