RailsアプリでURLの末尾のスラッシュを削除する方法は? (SEOビューで)
-
06-07-2019 - |
質問
コンテンツの重複を避けるために、サイトのページに複数の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]