无法将https://www.example.com映射到https://example.com

时间:2018-01-31 22:15:49

标签: .htaccess ssl

尝试设置.htaccess以将http://www.example.com的请求发送到https://example.com。使用像这样的.htaccess程序

RewriteEngine On

RewriteCond %{REQUEST_SCHEME}#%{HTTP_HOST} ^http#(?:www\.)?(.+)$ 
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
在处理http://www.example.com(转到https://example.com)以及https://example.comhttp://example.com时,

做了正确的事。但是,当我尝试使用https://www.example.com时,Chrome会抛出“ERR_SSL_PROTOCOL_ERROR”。

我的SSL证书显然不包含example.com的子域名,所以也许这就是问题所在?有没有办法避免在www.example.com域上进行不必要的SSL处理?

修改:问题是 www.example.com不存在。创建子域后,以下htaccess代码有效:

# Map www.example.com to example.com    
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
#
# Ensure we are using https:
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

[仍不确定我的SSL证书的范围。是一个问题。]

1 个答案:

答案 0 :(得分:0)

解决方案是添加子域www.example.com。 (见编辑过的问题。)