Rails перенаправляет неверный маршрут в корень - PullRequest
7 голосов
/ 01 июля 2011

Если мой веб-сайт будет www.foo.com, если пользователь введет www.foo.com/blahblahblah, он скажет, что /blahblahblah - неверный путь (очевидно). Но я хочу вместо этого перенаправить на путь root_path, чтобы контроллер мог обработать URL - страница должна отображаться www.foo.com. Я хочу извлечь текст blahblahblah и что-то с ним сделать. Как мне это сделать?

Ответы [ 2 ]

8 голосов
/ 01 июля 2011

Есть несколько возможностей.Вот одинВы можете добавить это к bottom вашего rout.rb:

match ':not_found' => 'my_controller#index',
  :constraints => { :not_found => /.*/ }

, который установит универсальный маршрут, чтобы действие индекса MyController обрабатывало любые пропущенные пути;он может обнаружить их, взглянув на params[:not_found] и выполнив все, что захочет, например, перенаправление на root_path (redirect_to root_url), стратегическое перенаправление куда-то на основе неверного пути, рендеринг чего-то особенного, поиск реферера / реферера для подсказок оисточник и т. д.

Опция :constraints необходима;в противном случае параметр not_found не сможет содержать специальные символы, такие как косые черты и точки.

Поместите это в конец ваших маршрутов, потому что, очевидно, оно будет соответствовать всем, и вы хотите дать другиммаршруты сначала ломаются на пути.

Если вы хотите только перенаправить, ничего больше, вы можете сделать это вместо этого (опять же, в bottom ):

match ':not_found' => redirect('/'), :constraints => { :not_found => /.*/ }
5 голосов
/ 04 июля 2014

в рельсах 4 get '* path' => redirect ('/')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...