Rails 앱에서 URL의 후행 슬래시를 제거하는 방법은 무엇입니까? (SEO 뷰에서)

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

문제

컨텐츠 복제를 피하기 위해 여러 URL (트레일 링 슬래시가 있거나없는)에 의해 내 사이트의 페이지가 액세스 할 수있는 페이지를 피하고 싶습니다.

현재 URL입니다

catalog/product/1

그리고

catalog/product/1/

같은 페이지로 연결됩니다. 내 목표는 두 번째 URL이 첫 번째로 리디렉션된다는 것입니다 (물론 리디렉션 301). 내 사이트의 어느 페이지도 내 홈페이지 / 분명히 제외한 후행 슬래시로 액세스 할 수 없습니다.

이것을하는 가장 좋은 방법은 무엇입니까? .htaccess 또는 lours.rb 사용? 어떻게 하시겠습니까?

NB : 저는 Ruby on Rails 1.2.3과 함께 발전하고 있습니다

도움이 되었습니까?

해결책

나는 사용할 것이다 아파치의 mod_rewrite. 이 시도:

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

편집하다: r = 301을 추가했습니다. 나는 기본 302와 그에 대한 SEO 이점이 있다고 생각합니다.

다른 팁

당신은 사용할 수 있습니다 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-Lewrite Gem을 사용하여이를 수행 할 수 있습니다. 방법은 다음과 같습니다. http://nanceskitchen.com/2010/05/19/seo-heroku-ruby-on-rails-and-removing-those-darn-trailing-slashes/

Routes.rb를 사용하여 리디렉션을 얻을 수 없습니다. 리디렉션을 발행하고 '/'로 끝나는 모든 URL을 가리키는 컨트롤러를 구축 할 수 있다고 생각하지만 불필요하게 복잡해 보입니다. 대신 .htaccess 파일에서 mod_rewrite를 사용합니다.

RewriteRule ^(.+)/$ $1 [R=301,L]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top