ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

Rails + Nginx環境で強制的にURLの最後に / を付ける方法

f:id:jun9632:20160708174653p:plain

表題の通り、Rails + Nginx環境で強制的にURLの最後に / を付ける方法です。

そもそもなぜ付ける必要があるのか?

そうです。Google大先生に怒られたことがきっかけです。

Search ConsoleのHTMLの改善の項目で、重複するメタデータとして

/item/12345/
/item/12345

こんな感じのURLが重複してるよ!と言われたんです。

そんなぁ、、、と思いつつも、最後に/を付ける方向で直しました。

対処方法

対処場所としては、RailsとNginxで対処しました。 最悪Nginxだけやっとけば、統一はされますが、一応Rails側でも対応しています。

Rails

application.rbに以下を追加します。

config.action_controller.default_url_options = { :trailing_slash => true }

これで、items_path とかroutes経由でのURLの後ろに「/」がついてくれます。

ただしこれだと、「/item/12345」を直接入力されてしまうと、「/item/12345」のままになります。

Nginx

なので、Nginx側にも以下の様にrewiteを入れて、強制的に最後に「/」を付けます。

rewrite ^(.*[^/])$ $1/ permanent;

これで、スラッシュアリに統一してくれます。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)