¿Cómo eliminar una barra diagonal final de una URL en una aplicación Rails? (en una vista SEO)
-
06-07-2019 - |
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
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]