开发者

Redirects in RoR: Which one to use out of redirect_to and head :moved_permanently?

we are making a website that takes a generated incoming link and forwards the user who is clicking on it to another website while saving a record of the action in our DB. I guess it's basically what ad-services like AdSense do.

However, what is the best way to redirect the user?

I think html-meta-tag-redirects are out of question.

So what other options are there?

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

This one is a 3开发者_开发技巧01-redirect. The next one is a 302:

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

Are there any others? And which is best to use for our case? The links are highly-dynamic and change all the time.

We want to make sure we don't violate any existing standards and of course we don't want search-engines to tag us as spammers (which we are not, btw).

Thanks!


From the browser/end user point of view

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

are equivalent to

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

There are some minor technical differences which can lead to one choice rather than the other.

redirect_to exists as part of the routing architecture. You can pass URL options and the method automatically creates the final location, according to the app routing rules.

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

On the opposite, head is a lower-level API for dealing with response headers. It doesn't care about the meaning of the headers you are passing to the response. It's useful when you specifically need to work with headers. I wouldn't use it to setup redirects.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜