简体   繁体   中英

How to remove a URL's trailing slash in a Rails app? (in a SEO view)

In order to avoid content duplication, I would like to avoid the pages of my site being accessible by several URLs (with or without trailing slash).

Currently, the URLs

catalog/product/1

and

catalog/product/1/

lead to the same page. My goal is that the second URL redirect to the first (redirection 301, of course). None page of my site should be accessible with a trailing slash, except my home page / obviously.

What is the best way to do this? Using .htaccess or routes.rb? How would you do that?

NB: I'm developing with Ruby on Rails 1.2.3

You could use http://github.com/jtrupiano/rack-rewrite for url rewriting to be independent from differences in web-servers.

Example usage in rails application:

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

I'd use Apache's mod_rewrite . Try this:

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

EDIT: Added R=301. I'm guessing there is an SEO advantage to that vs. the default 302.

You can't get a redirect using routes.rb. I suppose you could build a controller that just issues redirects and point all URLs ending in '/' to it, but that seems needlessly complicated. Instead, I'd use mod_rewrite in a .htaccess file:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM