トップ(最新)

nDiki : RewriteRule

Related term

2001年10月2日 (火)

Apache Proxy で アンテナの ?%MM%%DD%%HH%%TT% 除去 このエントリーを含むはてなブックマーク

アンテナページの多くはリンクURLに更新日時を付加する。 例えば

 http://www.naney.org/personal/diary/hns/

が、10月02日 14:46 に最終更新されているとう情報を取得すると

 http://www.naney.org/personal/diary/hns/?10021446

という、URL を持つリンクをアンテナページに生成する。 ページが更新されるとURLも変化するので、(Mozilla, Internet Explorer 等の)以前にアクセスした事のあるリンクの色を変えるブラウザでは、更新されたことを確認しやすい。

が、これはキャッシュ proxy には仇になる。 更新されるたびにURLが変化するということは、そのURLごとにキャッシュが作られるということだ。 私の愛用の WWWOFFLE もご多分にもれずそうである。 私は3ヶ月間キャッシュを保持するようにしているから、一日に3度更新されるページをアンテナのリンク経由で見ると、約90のコピーがキャッシュされる事になる。 そして、最新以外のキャッシュは(通常)2度と利用されることもない。 もはや、その URL ではアクセスされないから。

これはもったいない。 ようは、アンテナ経由でのアクセスの ? 以下を削除してキャッシュすればいいのだが、WWWOFFLE にはあいにくそのような機能はない。 そこで、URL を書きかえる proxy をブラウザと WWWOFFLE の間にカマせようということになる。

 Mozilla -> rewrite proxy -> WWWOFFLE -> target site

ここでは、Apache を rewrite proxy にすることにしてみた。 Apachemod_proxyproxy になるし、mod_rewriteURL を柔軟に変更できる。 もともと、自分の Web サイトのチェック用にローカルマシンで Apache も常時起動しているので設定を変更するだけだ。

とりあえず、大抵のアンテナは ?と8桁の数字(「なつみかん」でいうところの?%MM%%DD%%HH%%TT%)を付加するので、これをもぎとればよい。 以下、httpd.conf の修正。

 LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
 LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so

とモジュールをそれぞれ有効にする。rewrite_module より proxy_module を先に Load するようにする(デフォルトでは逆順なので注意)。

そして、httpd.conf の最後に

 ProxyRequests On
 ProxyRemote * http://127.0.0.1:8080/
 NoCache *
 <IfModule mod_rewrite.c>
 RewriteEngine on
 #RewriteLog /tmp/rewrite_log
 #RewriteLogLevel 9
 RewriteRule ^proxy:(.*)\?[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ $1? [L]
 </IfModule>

を追加。ProxyRemote で、WWWOFFLEproxy を指定。 RewriteLog, RewriteLogLevel はうまく書き替らない時に有効にしてログを確認するのに使う。 最後の RewriteRule で実際に書き替えを行う。 ポイントは $1? と、置換後の文字列指定で最後に ? をつけること。 これをつけないと query-string が削除されない(これに気がつくのに随分かかった)。

後はブラウザ側の http プロキシ先を 127.0.0.1:80 にすれば OK。

無条件に ?と8桁数字が末尾にくれば、取り除いてしまうので荒っぽい RewriteRule だ。 だが上記のような query string を使っているページは(多分)そうないから、とりあえず、これで良しとしよう。 困ったら直せばいい。

@ 追加リンク

スポンサード リンク


[ 10月2日全て ]

■よく検索されるキーワード

うなぎ(432) スーパー(266) 温め方(192) 温め(74) 書き方(47) 調理(46) perl(44) 提案書(37) windows(36) linux(35) cvs(32) アジェンダ(29) ウナギ(28) debian(25) ドラマ(22) svn(21) 壁紙(21) 動画(20) (19) java(19) ガッテン(18) 美味しく(18) 冷蔵庫(18) インストール(16) 画像(16) サンプル(16) 使い方(15) rcs(14) 修理(14) テンプレート(13) torrent(12) ためしてガッテン(12) tc-1(12) 温める(12) so905ics(11) web(11) iphone(11) x31(11) 渡辺杏(11) subversion(11) make(11) ganttproject(10) 影舞(10) おいしく(10) ノート(9) ガントチャート(9) パック(9) ヨドバシカメラ(9) gmail(9) apache(9) ツール(9) 映画(9) porter(9) 時計(8) thinkpad(8) emacs(8) wiki(8) usb(8) レンジ(8) google(8) gtd(8) 大井町(8) gnu(8) c#(7) ダイソー(7) 4c(7) 日本語(7) twitter(7) 提案書の書き方(7) 生年月日(7) 市原隼人(7) リフィル(7) pc(7) c++(7) 写真(7) djunit(6) scons(6) ボールペン(6) 故障(6) 方眼(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 5.171693s / load averages: 1.89, 1.56, 1.42
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)