- 2005年4月18日 05:37
- MovableType
前までは /archives/200504/という風に 年+月 のディレクトリを作成してたが、
/archives/2005/04/ という風に年のディレクトリを作ってから月のディレクトリを作るように変更。
古いのを削除したので。
以前のページにリンクしてくれてる人(がいるのか不明だが)のリンクが切れるので.htaccessでリダイレクトの設定をすることに
正規表現なんかよく分からないので、Googleで検索し、いろいろと試しているうちに何とかできた。
■正規表現メモ
[0-9]や\d → 0から9までの数字、 [a-z] なら aからzまでのアルファベット
[0-9] 数字 [0-9]{4} とすると 5桁の数字という意味 1111 2222 2020 5555 などなど
[a-z]{5] なら アルファベット5文字分
. (ピリオド) 改行以外の一文字
* 直前の文字の連続(0文字以上) /* → /// 566* → 5666666
任意の文字の連続を指定するとき *単体では使えない ピリオドと組み合わせる .*
()で囲っておくとあとで$n番目として ($1 $2 $3...) 使えるのを利用
.htaccessの場合は \{\}とか\(\)にしなくてもいいみたいだ
参考リンク:
http://www.sixnine.net/regexp/index.html
■で、つかう.htaccessは?
.htaccess
RedirectMatch ^(.*)/([0-9]{4})([0-9]{2})/(.*)\.php$ $1/$2/$3/$4.php
これで、
/archives/200406/20-0145.php へアクセスすると
/archives/2004/06/20-0145.phpにリダイレクトされるようになった
■結果こんな感じ?
http://rag2ch.s151.xrea.com/archives/200406/20-0145.php
↓
^(.*)/ → http://rag2ch.s151.xrea.com/archives/ → $1
↓
([0-9]{4})/ → 2005 → $2
↓
([0-9]{2})/ → 06 → $3
↓
(.*)\.php$ → 20-0145.php → $4 (phpのあとの$は最後の文字という意味?
↓
$nのデータを参照してリダイレクト先を決めるので1記事ずつ指定しなくてもOK
↓
$1/$2/$3/$4.php
↓
http://rag2ch.s151.xrea.com/archives/2004/06/20-0145.php
\dにしたりして、もっと短くできそうだけど、この辺が限界。
- Newer: RO、ゲーム鯖にサーバー攻撃
- Older: 一瞬
