2014-01-14 3 views
1

У меня было приложение, написанное на PHP, и теперь новое приложение написано в Rails. Они забыли указать закладки и браузерные страницы, так что мы все равно получаем много хитов на /index.phpRedirect Неработающие ссылки на Root

Как я могу указать на корень в моем приложении rails?

www.mydomain.com/index.php => www.mydomain.com

Заранее спасибо

+0

Вы можете использовать совпадение в маршруте для этого 'match '/index.php",: to => "somecontroller # action",: via => "get" ' – jbmyid

ответ

1

Вам нужно поймать исключение и перенаправление, если код ошибки 404.

См. Этот railscast для получения полной информации: http://railscasts.com/episodes/53-handling-exceptions-revised?view=asciicast

Основы следующие.

Добавьте это в config/application.rb исключений маршрута к приложению:

config.exceptions_app = self.routes 

Создать errors_controller и затем отобразить ошибки в ее шоу действия в вашем routes.rb файле:

match ':status', to: 'errors#show', constraints: {status: /\d{3}/ } 

errors_controller.rb:

class ErrorsController < ApplicationController 
    def show 
    if request.path == '/404' 
     redirect_to root_path 
    else 
     render text: request.path 
    end 
    end 
end 

Затем визуализируйте некоторые разумные ошибки, используя шаблон show для тех, которые не являются ошибками 404.

1

положить это после того, как все другие маршруты в вашем config/routes.rb:

matches '*any_path' => redirect('/') 

Это будет соответствовать любому заданному URL и перенаправить его на '/'. Но пока этот оператор последний в routes.rb, он не будет использоваться для маршрутов, найденных выше в файле.

Смежные вопросы