トップ «前の日記(2004-07-13) 最新 次の日記(2004-07-16)» 編集

tito Memo

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|
2010|02|04|05|06|08|
2011|01|02|03|08|10|12|
2012|01|
2013|03|04|

個人的なメモを記していくためのページです。


2004-07-15

* tdiaryで/?date=日付形式を無効に

前にバージョンアップしたときにhtml_anchor.rbプラグインを入れ忘れていたために日記の各エントリが/20040715.html/?date=20040715の二つ存在することになってしまった。動的に生成されるURLは後者なんだけどブックマークや検索エンジンのクローラは以前の.htmlも参照するので結果として同じ内容が別のURLで重複してしまった。

これをhtml_anchorを入れたことだし.html形式に統一させたい。そのために /?date=日付のリクエストに対してリダイレクト等で日付.htmlに誘導するmod_rewriteを考える。

日付.htmlで参照されたときもmod_rewriteで内部的には/?date=nnnnnになっている。直接?date=が来たときだけ.htmlへリダイレクトさせたいのだが案の定無限ループ

mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary
とか要求されたURLとまったく同じURLへリダイレクトしたりとこかうまくいかない。

結果こうしたらまぁまぁうまくいった。
  • ダミーのindex.htmlを用意する。
  • 日付.htmlの場合はindex.cgi?date=日付の形式に書き換え。
  • webarena2ではDirectoryIndexの優先順位はindex.cgiよりindex.htmlの方が高い。
  • /?date=日付の形式の要求はindex.html?date=日付となるのでこのときはgone[410]を返す。
  • ここでgoneではなくリダイレクトで日付.htmlを参照させようとするとそれを受けブラウザが20040715.html?date=20040715のようにリクエストを出してくるのでgoneにした。[1]
  • /d/tito/のように"/"で終わりQUERY_STRINGが無いときはindex.cgiに内部的に書き換える。
-rw-r-----   1 admin    web          2176 Jul 15 05:14 .htaccess
-rw-r-----   1 admin    web            19 Jan 24 16:13 .htpasswd
-rw-r-----   1 admin    web           625 Jan 24 16:08 dot.htaccess
-rwxr-x---   1 admin    web         14665 Feb  1 08:44 grep.cgi
-rwxr-----   1 admin    web           108 Jan 24 16:08 index.cgi
-rw-r-----   1 admin    web             0 Jul 15 05:11 index.html
-rwx--x---   1 admin    web           109 Mar  2 00:04 search.cgi
-rwxr-x---   1 admin    web           105 Feb 14 11:08 tb.cgi
-rw-rw----   1 admin    web           126 Jan 24 16:08 tdiary.conf
-rwxr-----   1 admin    web           109 Jan 24 16:08 update.cgi
RewriteRule ^([0-9]+)\.html$ index.cgi?date=$1 [L]
 
RewriteCond %{QUERY_STRING} ^date\=([0-9]+)$
RewriteRule index.html %1.html? [L,G]
 
RewriteCond %{QUERY_STRING} ^$
RewriteRule index.html index.cgi
直接index.cgi?日付形式で指定されて場合まで無効に出来るわけではないが、その必要もないし。
[1]20040517追記 やっぱりリダイレクトするようにした。大丈夫みたい。

* なんだこれ

0.0.0.0 - - [15/Jul/2004:06:07:11 +0900] "GET / HTTP/1.0" 200 1168 "-" "-"
[]

このページ内のリンクがクリックされたことを知るのにjavascriptを使用しています。javascriptを無効にするとあなたがどのリンクをクリックしたか通知されなくなります。javascriptを無効にしてもこのページの閲覧に問題はありません。javascriptを無効にするページもご覧ください。
クラシック・ドーム クラシック・ドームソフト・ドーム ソフト・ドームソフト・リム ソフト・リム
キャップ10個入り。3種類の詰め合わせ(3種x2=6個入り)の、トラックポイント・キャップ・コレクションはIBMダイレクトで945円(税込み)