7

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

目前,网址

catalog/product/1

catalog/product/1/

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

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

注意:我正在使用 Ruby on Rails 1.2.3 进行开发

4

4 回答 4

16

您可以使用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
于 2010-08-25T21:10:31.930 回答
9

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

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

编辑:添加 R=301。我猜这与默认的 302 相比有 SEO 优势。

于 2009-03-09T16:50:20.313 回答
2

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

于 2010-08-25T19:14:48.540 回答
0

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

RewriteRule ^(.+)/$ $1 [R=301,L]
于 2009-03-09T17:08:29.537 回答