Как удалить косую черту в конце URL-адреса в приложении Rails?(с точки зрения SEO)

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

Вопрос

Чтобы избежать дублирования контента, я хотел бы, чтобы страницы моего сайта не были доступны по нескольким URL-адресам (с косой чертой или без нее).

В настоящее время URL-адреса

catalog/product/1

и

catalog/product/1/

ведет на ту же страницу.Моя цель состоит в том, чтобы второй URL перенаправлял на первый (перенаправление 301, конечно).Ни одна страница моего сайта не должна быть доступна с косой чертой в конце, за исключением моей домашней страницы / очевидно.

Каков наилучший способ сделать это?Используя .htaccess или routes.rb?Как бы вы это сделали?

ПРИМЕЧАНИЕ:Я разрабатываю с Ruby on Rails 1.2.3

Это было полезно?

Решение

Я бы использовал mod_rewrite в Apache.Попробуй это:

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

Редактировать: Добавлено R=301.Я предполагаю, что в этом есть преимущество SEO по сравнениюзначение по умолчанию 302.

Другие советы

Вы могли бы использовать http://github.com/jtrupiano/rack-rewrite чтобы перезапись URL была независимой от различий в веб-серверах.

Пример использования в приложении rails:

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

Вы можете сделать это с помощью драгоценного камня rack-rewrite.Вот как это делается: http://nanceskitchen.com/2010/05/19/seo-heroku-ruby-on-rails-and-removing-those-darn-trailing-slashes/

Вы не можете получить перенаправление, используя routes.rb.Я полагаю, вы могли бы создать контроллер, который просто выдает перенаправления и указывает на него все URL-адреса, заканчивающиеся на '/', но это кажется излишне сложным.Вместо этого я бы использовал mod_rewrite в файле .htaccess:

RewriteRule ^(.+)/$ $1 [R=301,L]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top