Ответ 1
Если ваш проект приведен в действие рельсами 3, добавьте просто эту строку к вашим маршрутам. rb
match '*path' => redirect('/')
Изменить: поддержка Rails 4
match '*path' => redirect('/'), via: :get
or
get '*path' => redirect('/')
Всякий раз, когда пользователь нажимает неверную страницу, рельсы показывают 404.html из общей папки. Однако я бы хотел просто перенаправить браузер на корневую страницу, не показывая ничего. Поэтому я попытался подтолкнуть, но не помог, он все еще показывает страницу 404. Здесь выдержка из файла маршрутов:
# ...
map.root :controller => 'home', :action => 'home'
map.connect '*', :controller => 'home', :action => 'home'
Любые предложения? Спасибо, ребята!
Если ваш проект приведен в действие рельсами 3, добавьте просто эту строку к вашим маршрутам. rb
match '*path' => redirect('/')
Изменить: поддержка Rails 4
match '*path' => redirect('/'), via: :get
or
get '*path' => redirect('/')
Как ответ Аркана. Один момент, если вы не хотите этого поведения в среде разработки, тогда мог бы сделать -
match '*path' => redirect('/') unless Rails.env.development?
Рельсы 4 -
(routes.rb)
Вы можете использовать простой get
для перенаправления всех неизвестных маршрутов.
get '*path', to: 'home#index'
Если вы хотите предоставить маршрутизацию для обоих запросов POST и GET, вы все равно можете использовать совпадение, но Rails хочет указать метод запроса через via
.
match "*path" => "home#index", via: [:get, :post]
Помните, что routes.rb
выполняется последовательно (соответствующий первому маршруту, который соответствует структуре пути), поэтому установите подстановочный знак в нижней части ваших совпадений.
Вам нужно создать контроллер, чтобы сделать это
class RedirectsController
def index
redirect_to root_url
end
end
И на ваших маршрутах
map.connect '*', :controller => 'redirects', :action => 'index'