2011-06-04 [J] [長年日記]
html_anchor.rb を再導入する
ずいぶん前にこの日記をさくらインターネットへ引っ越してきたのだけど、そのときにhtml_anchor.rbの導入を後回しにしていた。
で、こちらの「.htaccess の Action を使う方法」を参照してようやく再導入。これで各日記が*.html形式でアクセス可能になったので、もう少し検索エンジンで引っ掛かりやすくなるはずである。
html_anchorがうまくいかない
html_anchor.rbを設定してメデタシメデタシ、と思ったのだけど、どうも挙動がおかしい。特定の日の日記を指定しても、トップページにリダイレクトされてしまうようだ。
そんなわけで、mod_rewriteの機能を使って設定してみた。
すると、今度は以下のように表示すらされない。
Not Found The requested URL /20110604.html was not found on this server.
この日記はhttp://okametaro.com というドメインで運用しているのだけど、このドメインは実際には http://okametaro.sakura.ne.jp/diary/ というアドレスに対してのエイリアスになっている。
試しに http://okametaro.sakura.ne.jp/diary/20110604.html にアクセスしてみると、問題なく表示。どうやらエイリアスに何かしらの問題があるように思える。
もう少し調べてみるとして、しばらくはhtml_anchor.rbは入れずに運用してみよう。
実は数年前に同じようにハマって、それでhtml_anchor.rbを導入することを先送りにしたことを思い出していたりします。
http://okametaro.com での mod_rewrite
ハマリにハマって、ようやくエイリアス呼び出しにおけるmod_rewriteの正常(と思われる)動作に漕ぎ着けた。
もともとtDiaryで推奨されているmod_rewriteの記述をベースに記述したのが以下。
RewriteEngine on RewriteRule ^diary/([0-9\-]+)\.html$ index.rb?date=$1
非常にシンプル。これで http://okametaro.sakura.ne.jp/diary/... へのyyyymmdd.html形式でのアクセスはOK。
これを以下のように変更した。 参考にしたのはこちらのページ。
RewriteEngine on RewriteBase / RewriteRule ^/([0-9\-]+)\.html$ index.rb?date=$1
RewriteBaseが"/"というのが「それで本当にいいの?」と思わせるんだけど、さくらインターネットの場合、これでいいようだ。あとは、3行目の正規表現に"/"を加えるとOK。これがなぜなのか、正規表現を使いこなせていない自分には説明する自信がないのだけれども。
この設定で、okametaro.com 宛のyyyymmdd.html形式によるアクセスは問題なしになったのだけど、今度は http://okametaro.sakura.ne.jp/diary/... へはNGとなった。まあ、そちらがうまくいかないのは特に困らないので、これでしばらく様子を見よう。