mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Octopress - URL に日本語を使う設定!

[ ブログ ] [ Octopress ]

こんばんは。

Octopress でカテゴリやタグに日本語を使用すると、URL に日本語が含まれることになり、404 エラーでうまく表示できません。(ローカル環境(WEBrick or thin)で rake preview した時のこと。サーバ(Apache)では正常に表示できます) OP_404ERROR #1

しかし、設定を編集することで、問題は解決できます。

以下、作業記録です。

0. 前提条件

  • 作業 OS は Linux Mint 13 Maya (64bit)
  • Ruby 1.9.3-p194
  • Octopress 2.0

1. config.ru の編集

config.rb を以下のように編集する。(URI.unescape させるだけということ)

config.ru
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
diff --git a/config.ru b/config.ru
index b1b746b..ab2150e 100644
--- a/config.ru
+++ b/config.ru
@@ -1,5 +1,7 @@
+# coding: utf-8
 require 'bundler/setup'
 require 'sinatra/base'
+require 'uri'

 # The project root directory
 $root = ::File.dirname(__FILE__)
@@ -7,7 +9,8 @@ $root = ::File.dirname(__FILE__)
 class SinatraStaticServer < Sinatra::Base

   get(/.+/) do
-    send_sinatra_file(request.path) {404}
+    #send_sinatra_file(request.path) {404}
+    send_sinatra_file(URI.unescape(request.path)) {404}
   end

   not_found do
@@ -22,4 +25,4 @@ class SinatraStaticServer < Sinatra::Base

 end

2. 確認

確認してみる。

1
2
$ rake generate
$ rake preview

日本語のカテゴリ名、タグ名をクリックしても 404 エラーにはならないはず。 OP_404ERROR #2

3. その他

前述のようにクリックで 404 エラーにはならないものの、 The W3C Markup Validation Service で警告(エラーではない)となるかもしれない。
気にしないのなら、それでよいが、当方は気にする気質なので、対応しておきました。
詳細は記載しませんが、リンクを作っている部分に URL エンコードさせる処理を追加するだけです。

参考サイト


これで、ローカル環境でも日本語 URL で苦慮しなくてもよくなりました。

もしかしたら、日本語の記事タイトルもいけるかも知れませんが、未確認です。
(今のところ、記事タイトルについては rake new_post をカスタマイズしてまでやる意味を感じないから)

以上。

Comments