开发者

Which characters in a search query does Google ignore (versus treating them as spaces?)

I want to give my pages human-readable slugs, but Rails' built-in parameterize method isn't SEO-optimized. For example, if I have a post called "Notorious B.I.G. is the best", parameterize will give me this path:

/posts/notorious-b-i-g-is-the-best

which is suboptimal since Google construes the query "Notorious B.I.G." as "Notorious BIG" instead of "Notorious B I G" (i.e., the dots are removed rather than treated as spaces)

Likewise, "Tom's fave pizza" is converted to "tom-s-fave-pizza", when it should be "toms-fave-pizza" (since Google ignores apostrophe's as well)

To create a better parameterize, I need to know which characters Google removes from queries (so I can remove them from my URLs) and which characters Google treats as spaces (so I can convert them开发者_StackOverflow社区 to dashes in my URLs).

Better still, does such a parameterize method exist?

(Besides stringex, which I think tries to be too clever. 2 representative problem cases:

[Dev]> "Notorious B.I.G. is the best".to_url
=> "notorious-b-dot-i-g-is-the-best"
[Dev]> "No, Curren$y is the best".to_url
=> "no-curren$y-is-the-best"


I would try using a gem that has been designed for generating slugs. They often make good design decisions and they have a way of updating the code for changing best practices. This document represents Google's best practices on URL design.

Here is a list of the best gems for solving this problem. They are sorted by rank which is computed based on development activity and how many people "watch" changes to the gems source code.

The top one right now is frendly_id and it looks like it will generate good slugs for your use in SEO. Here is a link to the features of the gem. You can also configure it and it looks like it is perfect for your needs.


Google appears to have good results for both the "b-i-g" and "big" in the url slugs.

For the rails side of things, yes a parameterize method exists.

"Notorious B.I.G. is the best".parameterize
=> "notorious-b-i-g-is-the-best"

I think you can create the URLs yourself... something like

class Album
  before_create :set_permalink

  def set_permalink
    self.permalink = name.parameterize
  end

  def to_params
    "#{id}-#{permalink}"
  end
end

This will create a url structure of:

/albums/3453-notorious-b-i-g-is-the-best

You can remove the id section in to_params if you want to.


Use the title tag and description meta tag to tell google what the page is called: these carry more weight than the url. So, leave your url as /posts/notorious-b-i-g-is-the-best but put "Notorious B.I.G. is the best" in your title tag.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜