如何在Rails应用程序中删除URL的尾部斜杠? (在SEO视图中)

为了避免内容重复,我想避免使用多个URL(带或不带斜杠)访问我的网站页面。

目前,URL

catalog/product/1 

 catalog/product/1/ 

导致同一页面。 我的目标是第二个URL重定向到第一个(当然是重定向301)。 我的网站的任何页面都不应该使用斜杠,除了我的主页/显然。

做这个的最好方式是什么? 使用.htaccess或routes.rb? 你会怎么做?

注意:我正在开发Ruby on Rails 1.2.3

我使用Apache的mod_rewrite 。 试试这个:

 RewriteEngine on RewriteRule ^(.+)/$ $1 [R=301,L] 

编辑:添加R = 301。 我猜这是一个SEO优势与默认302。

您可以使用http://github.com/jtrupiano/rack-rewrite进行url重写,以独立于网络服务器的差异。

rails应用程序中的示例用法:

 config.gem 'rack-rewrite', '~> 1.0.0' require 'rack/rewrite' config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do r301 %r{(.+)/$}, '$1' end 

你可以使用rack-rewrite gem来做到这一点。 方法如下: http : //nanceskitchen.com/2010/05/19/seo-heroku-ruby-on-rails-and-removing-those-darn-trailing-slashes/

您无法使用routes.rb获取重定向。 我想你可以构建一个只发出重定向的控制器,并将所有以“/”结尾的URL指向它,但这似乎不必要地复杂化。 相反,我在.htaccess文件中使用mod_rewrite:

 RewriteRule ^(.+)/$ $1 [R=301,L]