我在heroku上部署了一个rails应用程序,由google和DNS由cloudflare部署了域。我想将example.herokuapp.com
的所有请求重定向到example.com
。我无法在cloudflare上设置此功能,因为如果我使用的网页规则会将流量从example.herokuapp.com
发送到example.com
,那么cloudflare会引发此错误:ERROR Your URL should reference the domain 'example.com' in some way.
我也检查过heroku,但我不能真正得到我应该做的事情:
"即使您已设置自定义域,您的应用程序的Heroku域也将始终保持活动状态。如果您希望用户专门使用自定义域,您的应用应发送HTTP状态301 Moved Permanently以告知Web浏览器使用自定义域。主机HTTP请求标头字段将显示用户尝试访问的域;如果该字段是example.herokuapp.com,则发送重定向。"
将流量重定向到https://example.com
的首选方法是什么?
更新
application.rb中
config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
r301 %r{.*}, "https://example.com$&",
:if => Proc.new { |rack_env| rack_env['SERVER_NAME'] != 'example.com' }
end
答案 0 :(得分:1)
我使用rack-rewrite。
首先将其添加到您的Gemfile:
gem 'rack-rewrite'
然后运行bundle install
。
现在将以下内容添加到config.ru
文件中:
require 'rack-rewrite'
use Rack::Rewrite do
r301 %r{.*}, "https://example.com$&", :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] != 'example.com'
}
end
如果请求不适用于example.com
,则会执行301重定向到https://example.com