为了避免内容重复,我想避免我网站的页面可以通过多个 URL 访问(带有或不带有斜杠)。
目前,网址
catalog/product/1
和
catalog/product/1/
导致相同的页面。我的目标是第二个 URL 重定向到第一个(重定向 301,当然)。除了我的主页 / 显然之外,我的网站的任何页面都不应使用斜杠访问。
做这个的最好方式是什么?使用 .htaccess 或 routes.rb?你会怎么做?
注意:我正在使用 Ruby on Rails 1.2.3 进行开发
为了避免内容重复,我想避免我网站的页面可以通过多个 URL 访问(带有或不带有斜杠)。
目前,网址
catalog/product/1
和
catalog/product/1/
导致相同的页面。我的目标是第二个 URL 重定向到第一个(重定向 301,当然)。除了我的主页 / 显然之外,我的网站的任何页面都不应使用斜杠访问。
做这个的最好方式是什么?使用 .htaccess 或 routes.rb?你会怎么做?
注意:我正在使用 Ruby on Rails 1.2.3 进行开发
您可以使用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
我会使用Apache 的 mod_rewrite。试试这个:
RewriteEngine on
RewriteRule ^(.+)/$ $1 [R=301,L]
编辑:添加 R=301。我猜这与默认的 302 相比有 SEO 优势。
您可以使用 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]