2017-10-30 10 views
0

가의 기본적인 라우터를 살펴 보자 발견피닉스 : 아니 경로에 대한 기본 경로는

... 
scope "/", Backend do 
    pipe_through [:browser, :with_session] 

    get "/", PageController, :index 
end 
... 

기본 "Phoenix.Router.NoRouteError"http://localhost:4000/login 인상을 호출. 이 상황을 처리하는 가장 좋은 방법은 무엇입니까? 기본 phoenix 오류 페이지를 닫으시겠습니까? 색인 페이지로 리디렉션 하시겠습니까? 사용자 지정 페이지로 리디렉션되지 않습니까?

알 수없는 경로를 단일 경로로 리디렉션하는 방법은 무엇입니까?

답변

1

이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

최선의 방법은 없습니다. 개인적으로 404 메시지를 동일한 URL에 표시하여 사용자가 오타를 만든 경우 정확한 URL을 다시 입력하지 않아도 URL을 수정하고 수정할 수 있으므로 사이트에서 다시해야 할 필요가 있습니다. 잘못된 URL을 어딘가에 리디렉션합니다.

여전히 재 지정하려면, 당신은 범위 블록의 끝에서 포괄 노선과 간단한 컨트롤러를 만들 수 있습니다

# 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 

은 위의 /404 모든 알 수없는 GET 요청을 리디렉션됩니다. get 전화가 모두 접수되면이 경로가 오게하십시오.