重定向到裸域Rails 6的最佳实践



我在Heroku上有一个网站。出于搜索引擎优化的目的,我正试图严格使用我的裸域(https://example.com/)。

我发现这篇中等文章建议将此代码插入routes.rb

match '(*any)', to: redirect(subdomain: ''), via: :all, constraints: {subdomain: 'www'}

似乎是一个简单而有效的方法来处理重定向到Rails中的裸域。

然而,现在我所有的测试都失败了,提示:

Expected response to be a redirect to <http://www.example.com/> but was a redirect to <http://example.com/>.

Expected response to be a <2XX: success>, but was a <301: Moved Permanently> redirect to <http://example.com/>

我可以通过在页面加载的测试逻辑中用assert_response :redirect替换assert_response :success来解决这个问题。

我的问题是,将所有的测试更改为assert_response :response是最佳实践吗?或者是否有一种更简单的方法来配置Rails 6中的裸域重定向,而不会干扰测试逻辑?

测试示例:

test "should get example page" do
get example_path
assert_response :success
end

Routes.rb

root to: "site#index"
get "example", to: "site#example

问题是用于rails测试的默认URL恰好是www.example.com,它正在击中您的路由。

在这里查看更多详细信息如何更改默认"www.example.com"在rails中测试的领域?

这会击中你的重定向路由。更改默认主机以删除www,它应该可以解决问题,例如

controller.request.host = "example.com"

相关内容

  • 没有找到相关文章

最新更新