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

Fla*_*kou 5 ruby seo ruby-on-rails url-rewriting

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

目前,URL

catalog/product/1
Run Code Online (Sandbox Code Playgroud)

catalog/product/1/
Run Code Online (Sandbox Code Playgroud)

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

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

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

les*_*est 15

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

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

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

  • 在Rails 4中,您需要将`Rack :: Lock`替换为`Rack :: Runtime`(或其他),因为在Rails中默认启用的多线程Rails环境中不存在`Rack :: Lock` 4. (3认同)

Sar*_*Mei 9

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

RewriteEngine on
RewriteRule ^(.+)/$ $1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

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