11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

rack-rewriteでURLの末尾に強制的にスラッシュを付ける

Posted at

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/

11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?