2011-10-20 2 views
1

Я переделываю старый веб-сайт php в RubyOnRails (3.0.3). Существующий веб-сайт (написанный на php) уже несколько лет находится в сети в Интернете и получил множество ссылок и хорошо расположен в Google.301 Перенаправить старые php-пути в новые Rails

Теперь, поскольку я выпускаю его в Rails в том же домене, я хочу, чтобы старые файлы были 301 перенаправлены в соответствующий файл в новой версии. Что было бы лучше всего?

Этих обстоятельства:

  • Я строй нового сайта на тот же домен, где я заменяющий PHP-версию
  • Там нет никакой логики в том, что файлы были переименованы. Например, www.domain.com/cat/home/page/helloworld.php может иметь свое соответствующее место на www.domain.com/stuff/hello-world-in-rails, а некоторые файлы удалены и т. Д.
  • Таким образом, , Я хотел бы указать в таблице или подобном, где один столбец является старым путем, а другой столбец - новым. Когда кто-то пытается получить доступ к www.domain.com/cat/home/page/helloworld.php они будут 301: d к www.domain.com/stuff/hello-world-in-rails

Когда я сделали php-сайты в Wordpress. Я решил это, добавив код перенаправления в каждый файл php, указывающий на новый путь (в Wordpress). Поскольку моя Rails-установка не поддерживает php-файлы, это невозможно.

Я предполагаю, что mod_rewrite - мое оружие выбора, но как я должен идти на него?

+0

возможно дубликат [Перенаправить старый контент (.html/.php и т.д.) Ruby On Rails] (http://stackoverflow.com/questions/2063892/reroute-old-content-html- php-etc-to-ruby-on-rails) –

ответ

3

Вы можете управлять всеми перенаправлениями в файле маршрутов. Здесь документация по маршрутам, особенно метод redirct, будет интересен для вас!

http://guides.rubyonrails.org/routing.html#redirection

+0

Да, это прекрасно работает. Я не понимал, что все так просто! Но перенаправляются ли они 301? – Christoffer

+0

Я думаю, вы можете указать HTTP-код как параметр для метода. Проверьте документацию, я думаю, есть опция: status, которая дает вам возможность изменить статус HTTP. – davidb

2

Я предлагаю обработать эту задачу с помощью стойки, должен быть быстрым и снять нагрузку с вашего рельса.

Существует rubygem для стойки под названием «redirect»

Это позволяет обнаруживать и перенаправить некоторые страницы с помощью простого массива. например

redirect ['/catch_url', '/redirect_url'], 
      ['/catch_url2', '/redirect_url2'] 

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

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