Перенаправления в RoR: какой использовать из redirect_to и head: Move_permanently? - PullRequest
4 голосов
/ 29 апреля 2010

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

Однако, как лучше всего перенаправить пользователя?

Я думаю, что html-meta-tag-redirects исключен.

Так какие еще варианты есть?

head :moved_permanently, :location => "http://www.domain.com/"

Это перенаправление 301. Следующий 302:

redirect_to "http://www.domain.com"

Есть ли другие? И что лучше всего использовать для нашего случая? Ссылки очень динамичны и постоянно меняются.

Мы хотим убедиться, что мы не нарушаем никаких существующих стандартов, и, конечно, мы не хотим, чтобы поисковые системы отмечали нас как спамеров (а мы, кстати, не являемся).

Спасибо!

1 Ответ

6 голосов
/ 29 апреля 2010

С точки зрения браузера / конечного пользователя

redirect_to "http://www.domain.com"
redirect_to "http://www.domain.com", :status => 302
redirect_to "http://www.domain.com", :status => 301

эквивалентно

head 301, :location => "http://www.domain.com/"
head 302, :location => "http://www.domain.com/"

Есть некоторые незначительные технические различия, которые могут привести к одному выбору, а не к другому.

redirect_to существует как часть архитектуры маршрутизации. Вы можете передавать параметры URL, и метод автоматически создает окончательное местоположение в соответствии с правилами маршрутизации приложения.

redirect_to root_url, :status => 302
redirect_to { :controller => "main", :action => "index" }, :status => 302

Напротив, head - это низкоуровневый API для работы с заголовками ответов. Его не волнует значение заголовков, которые вы передаете ответу. Это полезно, когда вам конкретно нужно работать с заголовками. Я бы не стал использовать его для настройки перенаправлений.

...