AnA*_*ice 5 ruby-on-rails ruby-on-rails-3
我的应用程序托管在Heroku上,并拥有www.mysite.com的证书
我正在努力解决
这是我到目前为止所拥有的:
class ApplicationController < ActionController::Base
before_filter :check_uri
def check_uri
redirect_to request.protocol + "www." + request.host_with_port + request.request_uri if !/^www/.match(request.host) if Rails.env == 'production'
end
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有起作用.任何建议或可能不同的方法来解决确保HTTP和www.在URL中?
谢谢
yfe*_*lum 12
对于SSL,请使用rack-ssl.
# config/environments/production.rb
MyApp::Application.configure do
require 'rack/ssl'
config.middleware.use Rack::SSL
# the rest of the production config....
end
Run Code Online (Sandbox Code Playgroud)
对于WWW,创建一个Rack中间件自己.
# lib/rack/www.rb
class Rack::Www
def initialize(app)
@app = app
end
def call(env)
if env['SERVER_NAME'] =~ /^www\./
@app.call(env)
else
[ 307, { 'Location' => 'https://www.my-domain-name.com/' }, '' ]
end
end
end
# config/environments/production.rb
MyApp::Application.configure do
config.middleware.use Rack::Www
# the rest of the production config....
end
Run Code Online (Sandbox Code Playgroud)
要在浏览器中对此进行测试,您可以编辑 /etc/hosts在本地开发计算机上文件
# /etc/hosts
# ...
127.0.0.1 my-domain-name.com
127.0.0.1 www.my-domain-name.com
Run Code Online (Sandbox Code Playgroud)
在本地开发计算机上以生产模式运行应用程序
$ RAILS_ENV=production rails s -p 80
Run Code Online (Sandbox Code Playgroud)
并浏览到 http://my-domain-name.com/并查看会发生什么.
在测试期间,您可能想要注释掉重定向到HTTPS站点的行.
可能还有一些方法可以使用许多Rails项目使用的标准单元测试和集成测试工具来测试它,例如Test::Unit和RSpec.
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |