Octopress - URL に日本語を使う設定!
Updated:
Octopress でカテゴリやタグに日本語を使用すると、URL に日本語が含まれることになり、404 エラーでうまく表示できません。(ローカル環境(WEBrick or thin)で rake preview
した時のこと。サーバ(Apache)では正常に表示できます)
しかし、設定を編集することで、問題は解決できます。
以下、作業記録です。
0. 前提条件
- 作業 OS は Linux Mint 13 Maya (64bit)
- Ruby 1.9.3-p194
- Octopress 2.0
1. config.ru の編集
config.rb
を以下のように編集する。(URI.unescape
させるだけということ)
File: 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
26
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. 確認
確認してみる。
$ rake generate
$ rake preview
日本語のカテゴリ名、タグ名をクリックしても 404 エラーにはならないはず。
3. その他
前述のようにクリックで 404 エラーにはならないものの、 The W3C Markup Validation Service で警告(エラーではない)となるかもしれない。
気にしないのなら、それでよいが、当方は気にする気質なので、対応しておきました。
詳細は記載しませんが、リンクを作っている部分に URL エンコードさせる処理を追加するだけです。
参考サイト
これで、ローカル環境でも日本語 URL で苦慮しなくてもよくなりました。
もしかしたら、日本語の記事タイトルもいけるかも知れませんが、未確認です。
(今のところ、記事タイトルについては rake new_post
をカスタマイズしてまでやる意味を感じないから)
以上。
Comments