В теории вы можете добавить много маршрутов, которые хотите. Тем не менее, мы не должны ставить ненужные данные в файл маршрутов, потому что он будет потреблять память, а для обработки всех логических маршрутов для каждого запроса требуется несколько раз, прежде чем он сможет перейти к контроллеру.
Если у вас довольно много URL-адресов для перенаправления, вместо того, чтобы испортить файл маршрутов, я бы рекомендовал вам создать контроллер только для перенаправления, потому что вы могли бы написать намного более гибкий код. Возможно, вы могли бы создать таблицу для хранения from_url
(старый url) и new_url
(для перенаправления). Затем внутри нового контроллера просто найдите старый URL-адрес в базе данных и выполните перенаправление.
class RedirectionController < ApplicationController
def index
redirect = Redirection.find_by_from_url(request.request_uri)
if redirect
redirect_to redirect.to_url, :status => :moved_permanently
else
render 'public/404', :status => :not_found, :layout => false
end
end
end
Последнее, используйте Route глобирование, чтобы соответствовать всем URL для перенаправления. Вы можете проверить больше об этом на http://guides.rubyonrails.org/routing.html
match '/produits/*' => 'redirection#index'
Для акцента символы, такие как «é», вам просто нужно сохранить это значение внутри базы данных. Для MySQL вы должны настроить сервер базы данных для хранения utf-8
и обновить соединение внутри базы данных.yml.
encoding: utf8
collation: utf8_unicode_ci
Вы можете попробовать перенаправить код. Он работает отлично. Он должен иметь # encoding: UTF-8
в начале файла, потому что есть эти символы акцента.
# encoding: UTF-8
class RedirectionController < ApplicationController
def index
redirect_to "produits/les-pavages/paves-carres/item/48-pavés-carrés"
end
end
Спасибо за этот очень хороший ответ chamnap! –