2011-01 / 2011-01-20

前のエントリ: Pukiwikiのソースコードハイライトプラグインおぼえがき [PHP]
次のエントリ: twitterを始めてみたり [diary]

1エントリ1ページにしてみたけど誘導用mod_rewrietは不可だった
2011-01-20-1 / カテゴリ: [ubuntu][Apache][chalow] / [permlink]

[2011-01-18-1]chalowを設定変更して、今までは1日複数エントリ日記を書いても1ページに詰め込んでて居たのを、1エントリ1ページにして
古いURLの YYYYmmdd.html#YYYYmmdd-x をmod_rewriteあたりで新URL(YYYYmmdd-x.html)へ誘導
なんて書いてたわけだけど、mod_rewrite だと、うん、それ無理。


そもそも mod_rewrite はサーバ(Apache)に届いたブラウザからのリクエストパスに対してリダイレクトなどを行うモジュールだけど、やりたかったことの「YYYYmmdd.html#YYYYmmdd-x → YYYYmmdd-x.html」は YYYYmmdd.html までしかサーバへリクエストしないので、フラグメント識別子(#YYYYmmdd-xの部分)はどう転んでも対処できないってわけ。
Firefox(3.6.13/Win7)のLive HTTP Header 0.16なんかだと、リクエストURLでネットワークに流してるように見えるけど、実際には流れてない。
この辺はやっぱサーバ側でパケットキャプチャするのが最も確実だよな。
とはいえ、https なサイトはこれ使わないとどうにもならんけど。

ubuntu(lucid/10.04)の場合はapache-binにmod_rewriteは入っているので、有効にして(必要なら)AllowOverrideをイジればOK
# a2enmod rewrite

mod_rewriteが有効になってるかどうかをとりあえず確認するにはとりあえず
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /
だけ .htaccess に書いて、そのサーバの存在しないURLにアクセスしてルートドキュメントが表示されればOK
RewriteRule がリダイレクトのルール。m/^(.*)$/ にマッチしたURLを / に飛ばす。つまり通常は全てのリクエスト。
ただし、(その前の行の)RewrietCond の定義があれば、条件付になる。
どれかの条件に合致すれば、RewriteRule が適用される。
とりあえずこのへん
条件の内容はPerlとかやってりゃわかるでせう:p

つーわけで、サイドメニュー部分に告知するか…
Referrer (Inside): [2011-01-22-1]
前のエントリ: Pukiwikiのソースコードハイライトプラグインおぼえがき [PHP]
次のエントリ: twitterを始めてみたり [diary]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 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
2007 : 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
2005 : 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

最終更新時間: 2013-05-02 16:12