だらだら〜個人事業〜

HatenaDiaryから引っ越してきました。Githubもnyakagawanです。

mod_rewrite

今、Webサイトの年齢認証的な仕組みを偉大な先人様のサイトを見てコードまるコピしてやってみているのですが。mod_rewriteでなんか想定外のことが…!まぁ想定もクソもなく、俺の思ったとおりに動かねーってことですけど。

どんな想定外かというと、mod_rewritehttpd.confに書いてるんですけど、htmlの中にリンク貼って適用してるCSSとか、画像とかにもURI変換が掛かってしまってやばいことになっている。というちょっと考えるとごもっともな現象で。
はじめはCSSが適用されてないことに気づいて、なんでだ?と思って。下記をhttpd.confに足したのです。

RewriteLog rewritelog
RewriteLogLevel 9

で、ログを見るとCSSとかその他大勢にも変換が掛かってるじゃないか!ということで

RewriteCond %{REQUEST_URI} ^.*\.(html|cgi)$

こんなふうに書いてみた(^.* <--この部分っているのか?)
これでおkとかおもって、index.htmlに貼った別ページ(indexより下の階層にある)へのリンクをクリックしてとんだら、またCSSが適用されてない…
というかURIがオカシイのです。本来は

http://ドメイン/page/contents.html

なのが

http://ドメイン/page/page/contents.html

となるっっっ!面白いことにpage/のところはリンク踏むごとに増殖していく…。いったい何が起きてるんだろうね?<今ここ
ちなみにRewriteRuleはこげなかんじ。Cond通ったら何がなんでもIndexにリダイレクトするってことですな。

RewriteRule ^/(.*)$ /index.html [L]

でも

本当はリダイレクトはCoockieの有る無しと合わせてつくろうと思ってるので、そもそもこれらの問題は表面化しないのかもしれない。と思ってやったらやっぱりそうだった。
page/が増殖する件も、RewriteBaseが変換後のもので書き換えられるからそうなことになってたんじゃないかなーと想像。

次はとりあえず

phpが動かない気がするから、それの対応をしようか。つかVMで変更した設定とかそろそろ忘れそうだけど、大丈夫か('A`;
本チャン鯖で動かないとかありそうだな