我有一个通过弹性负载平衡器(ELB)在AWS上设置的域。要启用SSL,我已将AWS托管安全证书(* .domain.us)添加到负载均衡器。我需要能够访问以下8个网址安全组合:如何从https子域中删除www
[1] http://www.domain.us
[2] http://www.subdomain.domain.us
[3] http://domain.us
[4] http://subdomain.domain.us
[5] https://www.domain.us
[6] https://www.subdomain.domain.us
[7] https://domain.us
[8] https://subdomain.domain.us
所蕴含通配符AWS证书,1,4,5,和8个自动为我工作。但对于剩余的URL类型,我更新了我的.htaccess文件,如下所示: (如果我只是访问[7]而没有将其转换为www.domain.us,我得到一个“连接不安全”的错误,因为我的AWS证书是wildcard one,并且仅在https:// 域名 .us中无效https:// www .domain.us或https:// 子域名 .domain.us由于通配符证书正常工作)
RewriteEngine On
# domain.us => www.domain.us -------------------------------------------
RewriteCond %{HTTP_HOST} ^domain.us
RewriteRule^http://www.domain.us%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^domain.us
RewriteRule^https://www.domain.us%{REQUEST_URI} [R=301,L]
# www.subdomain.domain.us => subdomain.domain.us -----------------------
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.domain\.us)$ [NC]
RewriteRule^http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
# NO WWW http://www. becomes always http://
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.(.+\.domain\.us)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# http => https ------------------------------------------------------------
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# 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
<Files 403.shtml>
order allow,deny
allow from all
</Files>
我正在侦听ELB上的端口80和443,并将每个端口的相应数据发送到实例端口。我在EC2实例上打开了80和443端口。
我已经经历了许多SO帖子,并创建了上面的.htaccess文件,但是我仍然无法获得。 [6]和[7]工作。浏览器中仍然出现“连接不安全”错误。任何人都可以帮忙吗?
如果您的证书不包含'domain.us',那么您不能重写'https:// domain.us'的请求,因为它永远不会到达那么远。 – CBroe