Movable Type 4に移行してリンク切れが起きる問題対策

いいめもも、このブログも、Movable Typeをつかっています。いいめものほう、以前はMovable Type 3だったのですが、サーバを移動させたのを機会に、Movable Type 4に乗り換えました。



で、乗り換えて気づいたこと。そこら中でリンク切れが起きている…

切れたリンクと本来のページを見てみると、どうやら、Movable Type 3のころ、URLに(アンダースコア)を使っていたページが、勝手に-(ハイフン)に置き換えられてしまった模様。

調べてみると、困っている人もたくさん。



アップデートは計画的に – Nizah Blog

MT4.1 ウェブページのファイル名に「
」アンダースコアは禁物 – 具現 | 蓮華のライフデザイニングブログ

コメントスパム対策さらにその後 – あれているBlog

bq69 collectibles – MT 4.1 upgrade: cont’d

みなさまそれぞれのやり方で対処されたみたいですが、納得いかないっすよねぇ?

自分の場合、必ずしもURLがpost_14.html という形になっているとは限らなくて、this_is_a_pen.htmlみたいなURLになっていることがあるので、単純なredirectではとばすのが困難です。サーバ移行だから、Movable Type3の頃のキャッシュに期待するわけにも行きません。



こういうときは、apacheのmod_rewriteの出番だと思われます。rewrite_ruleを使ってアンダースコアをハイフンに置き換えてリダイレクトしてあげれば、大手サイトからいただいたリンク価値を失うこともなく、問題を一発で解決できるはずです。今こそブログに書くときだ!


…と思ったのですけど、最近忙しかったので、実作業ははてなの皆様にアウトソースさせていただきました^^;



Apacheのmod_rewriteをつかって、URL中のアンダースコアをハイフンに置き換えるRewriteRuleを教えてください。 つまり、 http://example.com/blog/2008/05/post_14.html と.. – 人力検索はてな


期待通り適切な書き方を教えていただけたので、ここでブログ記事として公開する次第。

Movable Type 3から4に移行して、URLがアンダースコアからハイフンに変わってしまって困っている人は、httpd.confに以下のようにかけばリダイレクトさせることができます。

<Directory "hogehoge">
Options FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_(.+)\.html?$ $1/$2/$3-$4.html [N,L,R]
</Directory>

<Directory “hogehoge”> の部分は、自分のブログが置いてあるディレクトリ(公開設定-公開パス-サイトパスに書いてある)です。

このルールにより、2007/10/post_123.htmlという具合にアンダースコアを含むURLにアクセスしてきた場合、Apacheサーバが「あ、そのファイルはこっちに移動しましたから」(301 Moved Permanently)と新しいURLを案内してくれるようになります。

2007/10/this_is_a_pen.htmlみたいなURLもちゃんと変換してくれます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です