복붙노트

[RUBY-ON-RAILS] 레일 : root_url 모든 알 수없는 경로를 재 지정

RUBY-ON-RAILS

레일 : root_url 모든 알 수없는 경로를 재 지정

사용자가 잘못된 페이지를 명중 할 때마다, 쇼 공용 폴더에서으로 404.html 레일. 그러나, 나는 아무것도 표시하지 않고, 루트 페이지로 브라우저를 리디렉션 단지 싶습니다. 내가 globbing을 시도했지만 아무 소용했다 그래서, 여전히 404 페이지를 보여줍니다. 여기 내 루트 파일에서 추출입니다 :

# ...
map.root :controller => 'home', :action => 'home'
map.connect '*', :controller => 'home', :action => 'home'

어떤 제안? 고마워, 얘들 아!

해결법

  1. ==============================

    1.프로젝트는 레일 (3)에 의해 구동되는 경우, routes.rb 단순히이 줄을 추가

    프로젝트는 레일 (3)에 의해 구동되는 경우, routes.rb 단순히이 줄을 추가

    match '*path' => redirect('/')
    

    편집 : 당신은 레일 4 또는 5에 경우

    match '*path' => redirect('/'), via: :get
    

    또는

    get '*path' => redirect('/')
    
  2. ==============================

    2.Arkan로 대답처럼. 개발 환경에서이 동작을하지 않을 경우 한 점, 다음 할 수있는 -

    Arkan로 대답처럼. 개발 환경에서이 동작을하지 않을 경우 한 점, 다음 할 수있는 -

    match '*path' => redirect('/')   unless Rails.env.development?
    
  3. ==============================

    3.레일 4 -

    레일 4 -

    (routes.rb)

    당신은 여전히 ​​알 수없는 경로를 리디렉션하는 간단한 GET을 사용할 수 있습니다.

      get '*path', to: 'home#index'
    

    당신이 모두 POST에 라우팅을 제공하기를 원하며 여전히 일치를 사용할 수 있습니다 GET 요청하지만, 레일이 원하는 경우에 당신은 요청 메소드를 통해 경유를 지정합니다.

      match "*path" => "home#index", via: [:get, :post]  
    

    있으므로 matchings 하단의 와일드 넣어 잡는 (끼워 제공된 경로 구조는 상기 제 1 경로와 일치)이 routes.rb 순차적으로 실행된다 기억.

  4. ==============================

    4.active_storage 루트는 업로드 된 이미지 깨진 링크의 결과로, 캐치 올 경로에 의해 선택됩니다 레일 5.2에서 버그가 수 있도록 보인다. 이 문제는 GitHub의에 REPO 레일에보고하고, 버그가 새로운 릴리스에서 해결 때까지 누군가가 패치 아래로 주석하고있다 :

    active_storage 루트는 업로드 된 이미지 깨진 링크의 결과로, 캐치 올 경로에 의해 선택됩니다 레일 5.2에서 버그가 수 있도록 보인다. 이 문제는 GitHub의에 REPO 레일에보고하고, 버그가 새로운 릴리스에서 해결 때까지 누군가가 패치 아래로 주석하고있다 :

    마지막 끝나기 전에 routes.rb 우측에서

    get '*all', to: 'application#index', constraints: lambda { |req|
        req.path.exclude? 'rails/active_storage'
      }
    

    다음 응용 프로그램 컨트롤러 추가에 :

    def index
      flash.notice = 'No page found at that address'
      redirect_to root_path
    end
    
  5. ==============================

    5.당신은 할 수있는 컨트롤러를 만들 필요가

    당신은 할 수있는 컨트롤러를 만들 필요가

    class RedirectsController 
    
      def index
        redirect_to root_url
      end
    end
    

    그리고 당신의 경로에

    map.connect '*', :controller => 'redirects', :action => 'index'
    
  6. from https://stackoverflow.com/questions/4132039/rails-redirect-all-unknown-routes-to-root-url by cc-by-sa and MIT license