2016-07-14 73 views
1

我正在運行Rails,Phusion-Passenger。Apache只是不會將HTTP重定向到HTTPS

我已經嘗試過任何我發現堆棧溢出,但也許來源過時或什麼。 我的ssl正在工作,所有。我只是不能把它重定向到https。我收到了錯誤請求400錯誤,表示我試圖使用純http訪問https站點。

這是我的一個網站的配置。

<VirtualHost *:4000> 
    ServerName beast.xxxxx.com 

    # Tell Apache and Passenger where your app's 'public' directory is 
    DocumentRoot /var/www/cava/public 

    PassengerRuby /home/tasos/.rvm/gems/[email protected]/wrappers/ruby 

    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

    SSLEngine On 
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCertificateFile /etc/apache2/ssl/2_beast.xxxxx.com.crt 
    SSLCertificateKeyFile /etc/apache2/ssl/xxxxx_nopass.key 
    SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt  



    # Relax Apache security settings 
    <Directory /var/www/cava/public> 
     Allow from all 
     #Options -MultiViews 
     # Uncomment this if you're on Apache >= 2.4: 
     #Require all granted 
    </Directory> 
</VirtualHost> 

重寫啓用,我敢肯定它。 老年人我已經嘗試了多個代碼,你能建議我你的重寫函數的運行代碼嗎?

是否需要修改我的.htaccess文件或類似的東西?我看過它在很多地方寫過,但我也讀過這個文件不應該再修改。

我想聽聽任何建議。 任何幫助表示讚賞。

回答

3

此:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

這是一個「僅供內部使用」改寫,新的URL永遠不會顯示給客戶,因爲你沒有指定它應該是一個客戶端的重定向。

嘗試

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301] 
                ^^^^^^^ 

代替。 [R...]告訴mod_rewrite將新url作爲正式http重定向發送給客戶端。

+0

此外,使用「{SERVER_NAME}」而不是「{HTTP_HOST}」更好嗎? – Lag

+2

沒有。 servername在apache中設置,並且可以完全不同。例如如果您使用託管服務,它可能是'foo.bar.baz.hostingco.com',而不是'www.yoursite.com'。這對於承載多個域的apache尤其如此。 –

+0

哦,我明白了!感謝您解釋@Marc B :)我感謝你清除這個問題。 – Lag