rackを使ったアプリケーションで
rewriteし、末尾に強制的にスラッシュを付ける方法。(英語ではtrailing slashというみたい)
Apacheでいう
Rewrite ^(.+[^/])$ $1/ [L,R]
これです
まえがき
※ここは読み飛ばして構いません
なぜ、これが必要になったかというと、jekyllのアプリケーションを作成ている時、
通常の
$ jekyll serve
を実行しアクセスしたときはhttp://0.0.0.0:5000/blog
にアクセスしても自動的に末尾にスラッシュがつきます。
一方、unicornなどをrackを使った場合だと末尾にスラッシュはつかなくなり、リンクが上手く設定されない現象に困りました。
で、Apacheの用に、Rewrite Ruleを作ればできるのではいいのかなと。
通常であれはApacheやnginxなどで設定するのですが、herokuに上げるという事情があり、どうしてもアプリケーション側でやらないといけないということで、rack-rewriteを選択しました。
gemをインストール
rack-rewriteをインストール
gem 'rack-rewrite'
設定
config.ruに以下を追記
require 'rack/rewrite'
use Rack::Rewrite do
r301 %r{^([^.]+[^/])$}, '$1/'
end
.
を含むファイル(cssファイルとか)の場合にはrewriteしないようにしてます。
参考:逆に末尾のスラッシュを外す方法
http://www.itsupportnewcastle.org.uk/rack-rewrite-remove-urls-trailing-slash/