Comment supprimer la barre oblique de fin d'une URL dans une application Rails? (dans une vue SEO)

StackOverflow https://stackoverflow.com/questions/627006

Question

Afin d'éviter la duplication de contenu, j'aimerais éviter que les pages de mon site soient accessibles par plusieurs URL (avec ou sans barre de fin).

Actuellement, les URL

catalog/product/1

et

catalog/product/1/

mène à la même page. Mon objectif est que la deuxième URL redirige vers la première (redirection 301, bien sûr). Aucune page de mon site ne doit être accessible avec une barre oblique, sauf ma page d'accueil / de toute évidence.

Quelle est la meilleure façon de faire cela? Utiliser .htaccess ou routes.rb? Comment feriez-vous cela?

NB: Je développe avec Ruby on Rails 1.2.3

Était-ce utile?

La solution

Je voudrais utiliser le mod_rewrite d'Apache . Essayez ceci:

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

EDIT: Ajout de R = 301. Je devine qu'il y a un avantage de référencement à cela par rapport au 302 par défaut.

Autres conseils

Vous pouvez utiliser http://github.com/jtrupiano/rack-rewrite pour l'URL la réécriture est indépendante des différences entre les serveurs Web.

Exemple d'utilisation dans l'application rails:

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

Vous pouvez le faire en utilisant la gemme de réécriture de rack. Voici comment: http://nanceskitchen.com/2010/05/19/seo-heroku-ruby-on-rails-and-removing-those-darn-trailing-slashes/

Vous ne pouvez pas obtenir une redirection à l'aide de routes.rb. Je suppose que vous pouvez construire un contrôleur qui émet simplement des redirections et qui pointe vers toutes les URL se terminant par "/", mais cela semble inutilement compliqué. Au lieu de cela, j'utiliserais mod_rewrite dans un fichier .htaccess:

RewriteRule ^(.+)/$ $1 [R=301,L]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top