让我们看一下基本的路由器:
...
scope "/", Backend do
pipe_through [:browser, :with_session]
get "/", PageController, :index
end
...
调用http://localhost:4000/login会提升默认值" Phoenix.Router.NoRouteError"。 处理这种情况的最佳方法是什么? 离开默认的凤凰错误页面? 重定向到索引页面? 重定向到找不到的自定义页面?
如何将任何未知路由重定向到单个路径?
答案 0 :(得分:2)
处理这种情况的最佳方法是什么?
没有最佳方法。我个人更喜欢在同一个网址上显示404消息,以便在用户输入拼写错误时,他们可以编辑和修复网址,而无需再次重新输入确切的网址,如果用户必须重新输入,该网站将无效网址重定向到某个地方。
如果您仍想重定向,可以在scope块的末尾创建一个catch-all路由和一个简单的控制器:
# Controller
defmodule MyApp.FourOhFour do
use MyApp.Web, :controller
def index(conn, _params) do
redirect(conn, to: "/404")
end
end
# Route
scope "/", MyApp do
get "/*path", FourOhFour, :index
end
以上内容会将所有未知的GET请求重定向到/404
。确保此路线在所有get
来电之后出现。