RailsアプリでURLの末尾のスラッシュを削除する方法は? (SEOビューで)

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

質問

コンテンツの重複を避けるために、サイトのページに複数のURLでアクセスできるようにします(末尾のスラッシュの有無にかかわらず)。

現在、URL

catalog/product/1

and

catalog/product/1/

同じページに移動します。私の目標は、2番目のURLが最初のURLにリダイレクトされることです(もちろん、リダイレクト301)。私のホームページを除いて、私のサイトのどのページもスラッシュでアクセスできないはずです。明らかに

これを行う最良の方法は何ですか? .htaccessまたはroutes.rbを使用していますか?どうしますか?

NB:Ruby on Rails 1.2.3で開発しています

役に立ちましたか?

解決

Apacheの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-rewrite 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