簡體   English   中英

使用Rails 3.0.10的SSL重定向從非www到www和http到https

[英]SSL Redirection with Rails 3.0.10 from non-www to www and http to https

我們已經為https://www.domainname.com購買了域的Verisign SSL; 問題是它不適用於https://domainname.com 我正在使用ssl_requirement寶石: https : //github.com/rails/ssl_requirement

因此,我修補了Gem並將非www重定向到https://www.domainname.com ,它適用於以下情況:

http://www.domainname.com => https://www.domainname.com http://domainname.com => https://www.domainname.com

但不適用於有人鍵入的情況:

https://domainname.com

在Rails進行控制之前,服務器似乎拋出了錯誤。 以下是服務器的詳細信息:

操作系統:RHEL 5.5 Ruby:1.9.2 Rails:3.0.10(在RVM上)Web服務器:Apache(帶乘客)

謝謝你的幫助。

這是我用來從domainname.com重定向到www.domainname.com的代碼

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domainname.com [nc]
RewriteRule (.*) http://www.domainname.com/$1 [R=301,nc]

它位於www目錄的根目錄下的.htaccess文件中。

這是有關Rails 3.1中SSL的另一篇文章: http : //www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/

您可能需要使用Rails應用程序公共目錄中的.htaccess文件以apache級別處理此問題。

對於www重寫規則,請參見以下答案: 使用htaccess添加具有https支持的www

同樣,如果您要ssl整個應用程序,請查看Rack :: SSL中間件-它處理安全的cookie等。 這篇文章很好地使用了它,並避免了混合內容的警告。

http://collectiveidea.com/blog/archives/2010/11/29/ssl-with-rails/

希望這可以幫助。

注意:只是想一下,這可能仍然無法正常工作,如果不能正常工作,則可能必須設置特定的VirtualHost來處理這種情況,希望不能。

我發現機架重寫gem在這里特別有用,特別是因為Heroku不使用.htaccess。 寶石: https : //github.com/jtrupiano/rack-rewrite

這是config / environments / production.rb中的示例配置

ExampleApp::Application.configure do
  config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
    r301 /.*/, Proc.new {|path, rack_env| "http://www.#{rack_env['SERVER_NAME']}#{path}" }, :if => Proc.new {|rack_env| rack_env['SERVER_NAME'] !~ /www\./i}
   end
   #... the rest of production environment config.
 end

以我的要旨查看: https : //gist.github.com/1843097

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM