mod_rewrite
今、Webサイトの年齢認証的な仕組みを偉大な先人様のサイトを見てコードまるコピしてやってみているのですが。mod_rewriteでなんか想定外のことが…!まぁ想定もクソもなく、俺の思ったとおりに動かねーってことですけど。
どんな想定外かというと、mod_rewriteはhttpd.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が変換後のもので書き換えられるからそうなことになってたんじゃないかなーと想像。