2017-01-10 148 views
1

我讀過到處是Laravel可以當用戶通過HTTPS瀏覽並使用相應地產生途徑檢測,但是這似乎是不真實的。Laravel 5.3 HTTPS路由

我使用的配置在AppServiceProvider強制所有生成的URL添加前綴爲HTTPS但這只是掩蓋了一個根本問題。

我有Laravel坐在一個EC2實例。沒有負載均衡器,我沒有配置代理。這純粹是一個開發實例。

我怎樣才能獲得由route助手生成使用HTTPS網址嗎?

+0

據我所知,生成的URL應該是相對的,不是絕對的,所以也就無法在其上的協議。 – aynber

+0

它們是作爲絕對URL生成的。 –

回答

1

如果用戶是HTTPS頁面上,Laravel的route()助手將產生HTTPS URL。由於谷歌瀏覽器已將HTTP網站標記爲不安全,因此最好將所有HTTP請求重寫爲HTTPS。有很多方法可以做到這一點,但據我所知最好的辦法是設置您的Web服務器來完成這項工作。

樣品VH的Apache:

<VirtualHost my.app:80> 
    ServerName my.app 
    Redirect permanent/https://my.app 
</VirtualHost> 

<VirtualHost my.app:443> 
    DocumentRoot /home/my/public 
    ServerName my.app 
    ServerAlias my.app 
    ServerAlias *.my.app 
    SSLEngine on 
     SSLCertificateFile conf/ssl.crt/server.crt 
     SSLCertificateKeyFile conf/ssl.key/server.key 

    <Directory /home/my/public> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 
+0

'如果你HTTPS頁面上,Laravel的路線()助手將產生HTTPS url.'這就是問題所在 - 這不,在所有。而且我的虛擬主機已經配置爲支持HTTPS。 –

+0

這似乎是web服務器配置文件有問題。上面的配置來自一個相當大的項目,它的工作完美,請嘗試。它將所有HTTP請求重寫爲HTTPS,因此您將永遠無法加載HTTP頁面。 –

+1

它看起來像我沒有打開SSLEngine。現在路線似乎很好。 –