我有一個通過彈性負載平衡器(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