Pretty URL (/blog/recent
みたいなやつ)なページを生成してそのまま netlify にアップロードするだけだと、そのページにアクセスしたときに Content-Type: text/plain
で返ってきてしまい、HTMLとしてレンダリングしてくれないという課題がある。これには、 /_headers
というファイルでページごとのレスポンスヘッダを設定することで対応できる。
# /_headers /blog/recent Content-Type: text/html
ただ、 middleman だと、名前が _
から始まるファイルは partial template として扱われてしまうのと、デフォルトだと拡張子無しのページを生成することができないのとで、この /_headers
ファイルを生成するためにひと工夫必要になる。
具体的には次のように proxy
を指定して適当なファイル(ここでは source/netlify_headers.txt.erb
とする)を /_headers
として生成するだけ。
# config.rb proxy '/_headers', '/netlify_headers.txt', layout: false, ignore: true
ここで書いている ignore: true
オプションは、 proxy 先の /netlify_headers.txt
は生成しないことを指定している。
そして、 source/netlify_headers.txt.erb
には前述したような /_headers
に必要な記述をしておく。もしページ全てが対象なら sitemap を使って列挙すると良い。
<%# source/netlify_headers.txt.erb %> <%- (sitemap.resources.map(&:url) - %w(/_headers)).each do |url| -%> <%= url %> Content-Type: text/html <%- end -%>