¿Cómo eliminar una barra diagonal final de una URL en una aplicación Rails? (en una vista SEO)

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

Pregunta

Para evitar la duplicación de contenido, me gustaría evitar que varias URL tengan acceso a las páginas de mi sitio (con o sin barra inclinada).

Actualmente, las URL

catalog/product/1

y

catalog/product/1/

conduce a la misma página. Mi objetivo es que la segunda URL redirija a la primera (redirección 301, por supuesto). Ninguna página de mi sitio debe ser accesible con una barra diagonal, excepto mi página de inicio / obviamente.

¿Cuál es la mejor manera de hacer esto? ¿Usando .htaccess o routes.rb? ¿Cómo harías eso?

NB: estoy desarrollando con Ruby on Rails 1.2.3

¿Fue útil?

Solución

Usaría Apache's mod_rewrite . Prueba esto:

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

EDITAR: se agregó R = 301. Supongo que hay una ventaja de SEO frente a la 302 predeterminada.

Otros consejos

Puede usar http://github.com/jtrupiano/rack-rewrite para url reescritura para ser independiente de las diferencias en los servidores web.

Ejemplo de uso en la aplicación de rieles:

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

Puedes hacer esto usando la gema de reescritura en rack. Así es como: http://nanceskitchen.com/2010/05/19/seo-heroku-ruby-on-rails-and-removing-those-darn-trailing-slashes/

No puede obtener un redireccionamiento utilizando routes.rb. Supongo que podría construir un controlador que solo emita redirecciones y señale todas las URL que terminen en '/', pero eso parece innecesariamente complicado. En cambio, usaría mod_rewrite en un archivo .htaccess:

RewriteRule ^(.+)/$ $1 [R=301,L]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top