Как перенаправить (301) при изменении маршрутизации перевода? - PullRequest
3 голосов
/ 27 января 2011

Я ищу простой способ перенаправления в моем приложении.

СИТУАЦИЯ:

У меня есть такие маршруты:

http://myapp.com/authors/5-hemingway/books/1-moby-dick

Маршруты переводятся следующим образом (используя gem 'i18n_routing'):

http://myapp.com/acutores/5-hemingway/libros/1-moby-dick

Теперь я изменил перевод acutores на scriptores. Простой шаг, но я бы хотел перенаправить все маршруты, которые содержали старое имя ресурса «acutores», вместо маршрутов с «scriptores».

Полагаю, мне нужно играть в route.rb с:

match "/acutores" => redirect("/scriptores")

Но как сделать это эффективно для всех случаев, когда появляются «острые ощущения»? (особенно с вложенными маршрутами)

1 Ответ

8 голосов
/ 27 января 2011

Это перенаправляет /acutores/something на /scriptores/something, но не с простым /acutores:

match "/acutores/*path" => redirect("/scriptores/%{path}")

Кажется, что справляются оба:

match "/acutores(/*path)" => redirect {|params| "/scriptores/#{params[:path]}"}

- редактирование

Это избавит от всех косых черт:

match "/acutores(/*path)" => redirect{ |params| "/scriptores/#{params[:path]}".chomp("/") }

У меня были проблемы с перенаправлением кэширования в браузере, поэтому очищайте кеш после внесения изменений.

...