【发布时间】:2017-10-24 20:10:48
【问题描述】:
这可能看起来违反直觉,但我在 public 文件夹中有一个 404.html 页面。使用mypage.com/404.html 将直接点击此页面并显示带有200 的静态HTML 页面。有没有办法继续使用那个确切的页面/位置并将状态更改为404?
另一个(非理想)解决方案显然是将 404.html 移动到 views 文件夹并在 ApplicationController 和 routes.rb 中编写一个操作来执行此重定向。
TL;DR:在public 中返回带有404 状态代码的404.html 页面。
【问题讨论】:
-
添加
get '404.html', to:r edirect('/404.html', status: 404)仍然无法正常工作,因为 Rails 会在公共场合看到 404.html 并完全跳过路由 -
我理解问题和意图;当然有很多方法可以做到这一点。但是,你为什么要改变这种行为呢? 404.html 也只是一个页面。
-
@kiddorails 能够与查找 404 的状态监视工具一起使用,如果 Rails 堆栈中的某些内容出现故障 -
public中的 404.html 将在几个错误条件下提供服务,但是200 对任何外部服务来说都是成功的。
标签: ruby-on-rails rails-routing