天然パーマです。

nginxでリダレイクトの設定をしてデッドリンクを無くす

このゆーすけべー日記はMovableTypeにしてから3度以上はPermalinkのURLを変更しちゃっています>< 「BlogのURLってどんなのが奇麗なのかなー」と右往左往している様が見て取れますね。一番長く使っていたのが以下の形式です。

/archives/{年の下2桁}/{月2桁}/{日2桁}/{時2桁}{分2桁}{秒2桁}.html

ただこれだと「ディレクトリ切り過ぎじゃね?2100年以降に対応しないし!」なんて思ってなんとなく。最近移行した時に以下の形式にしました。

/archives/{年4桁}{月2桁}{日2桁}/{時2桁}{分2桁}{秒2桁}.html

で、それに伴い昔のリンクがもれなく「デッドリンク」と呼ぶのか、404状態になっていたので、さすがに直しました。apache使ってたときは.htaccessをMovableTypeから書き出すなんてやってましたが、nginxで今動かしているので、その手法は使えない。とはいえMovableTypeから.htaccessを作らなくても、上記のURL変換には法則があるので正規表現さえ使えれば置換ができます。nginxは正規表現に柔軟ため以下の設定を一行追加するだけでいけました(見やすくするため2行にわけてます)。

rewrite "^/archives/(\d{2})/(\d{2})/(\d{2})/(\d{6})\.html"
     http://yusukebe.com/archives/20$1$2$3/$4.html permanent;

マッチさせる部分をダブルクオーテーションで囲むことがポイントです(じゃないとnginxを起動する時に怒られる)。

nginxの設定はやりやすいですなぁー。とはいえ、Blogに限らずpermalinkのURLは変えちゃーいけませんね!