2011-09-09 71 views
2

我们已经为https://www.domainname.com购买了域名的Verisign SSL;问题是它不适用于https://domainname.com。我使用ssl_requirement宝石:https://github.com/rails/ssl_requirementSSL重定向与Rails 3.0.10从非www到www和http到https

所以我修补创业板非WWW的人也重定向到https://www.domainname.com和它的工作更好地为以下情况:

http://www.domainname.com =>https://www.domainname.com 的http://域名。 COM =>https://www.domainname.com

但没有为场景有人类型:

https://domainname.com

看来这个服务器的Rails控制前抛出错误。这里是服务器的详细信息:

OS:RHEL 5.5 红宝石:1.9.2 的Rails:3.0.10(RVM上) 的Web服务器:Apache与客运

感谢您的帮助。

回答

2

下面就来www.domainname.com

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

我用从domainname.com重定向代码这正好在www目录的根目录下的.htaccess文件。

下面是Rails的3.1左右SSL另一新手必看: http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/

+0

的感谢!我会试试这个,让你知道。 – RubyDev

1

你必须在你的Rails应用程序的公共目录中使用.htaccess文件来处理这个问题。

为WWW重写规则见本SO回答:use htaccess to add www with https support

此外,如果你去到SSL您的整个应用程序看看机架:: SSL中间件 - 它处理安全和饼干等。这篇文章对使用它做了很好的写作,也避免了混合内容警告。

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

希望这有助于。

注意:刚开始想,这可能无法工作,如果它不是你可能不得不设置一个特定的VirtualHost来处理这种情况,希望不是。

1

我已经找到了机架重写宝石是特别有帮助的,特别是因为Heroku的不使用的.htaccess。宝石:https://github.com/jtrupiano/rack-rewrite

下面是一个示例配置在配置/环境/ 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

相关问题