2017-05-01 61 views
0

我已經使用ELB在AWS設置了從http重定向到https。程序如下。在Chrome和FireFox中使用AWS的ELB從Http重定向到https

在該文件中的.htaccess,把下面的X - 轉發,原代碼

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker 
    RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 
</VirtualHost> 

然後.htaccess文件放入該文件夾我的網站停留的index.php裏面。

我在Chrome,FireFox和Safari上測試過。 Chrome和Safari都可以工作,但FireFox不支持。

在Chrome和Safari中,當我在瀏覽器中輸入www.domainname.com時,我在瀏覽器中看到更改爲https://www.domainname.com。和Safari一樣。

但是在Chrome中,當我輸入www.domainname.com時,頁面將加載http://www.domainname.com。即使我輸入http://www.domainname.com,它本身也改爲https://www.domainname.com

什麼可能是錯的? FireFox的重定向功能仍然無法使用嗎?

+0

YesI清除瀏覽器緩存已經幾次了。 FireFox仍然是一樣的。 – batuman

+0

瀏覽器不顯示它是不安全的。但是我沒有在前面看到https。 – batuman

+0

我從AWS獲得了一條線索的回覆,那就是ELB只是使用X-Forwarded-Proto插入重定向信息。所以實際的重定向實現需要在實例中發生,在Apache中。我需要弄清楚如何。 – batuman

回答

0

我正在解決這個問題很長一段時間,現在可以使其成功運行。 我喜歡分享我所做的如下。

(1)Create .htaccess file inside the folder same as root file index.php exists 
(2).htaccess file has 
RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 
(3)Then enable mod_rewrite, try the command line command: 
    sudo a2enmod rewrite 
(4)To make sure mod_rewrite is enabled, update /etc/apache2/apache2.conf file as 
<Directory /var/www/html> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
</Directory> 
initially was 
<Directory /var/www/> 
     Options Indexes FollowSymLinks 
     AllowOverride None 
     Require all granted 
</Directory> 

Then you can setup http to https successfully 
You need to restart server as sudo service apache2 restart after update of /etc/apache2/apache2.conf