おのたく日記 YouTubeも始めました→
2005-02-04(Fri) [長年日記]
■ [Apache] J2EE RIに飛ばすとき
mod_jkなどを利用してTomcatだとAJP12などのコネクタにより、ApacheからTomcatへ飛ばすことができるけど、「J2EE RIの時にはコネクタ無いし困ったなぁ」と思って、「mod_proxyすればよいかな?」って調べていたら Rewriteでも良いことが判明
RewriteEngine On
RewriteRule ^/mt/mt.cgi(.*)$ http://localhost:8080/mt/mt.cgi$1 [P,NE,L]
[Apache 2.0 + mod_proxy によるリバース・プロキシの構築より引用]
http://localhostでproxyになるのかなぁ。なんかforwardされるのでブラウザからlocalhostにアクセスに行ってダメなような気もするけど…
■ [Apache] /~user/ を suexec を利用可能にしたまま /user/ でアクセス出来るようにする。
いつか ~user/diaryから /page/diary/にURLを変更したときに、suexecの影響でファイルのUIDを変えないといけないことがあった。
しかも、元の~userで呼ぶと、
Premature end of script headers:
というエラーが発生してしまうようになっていた。
そんな中で、mod_rewriteの使い方を見ていたら
*
UserDir enabled
UserDir public_html
RewriteEngine on
RewriteRule ^/([a-zA-Z0-9]+)/(.*) /~$1/$2 [PT]
RewriteRule ^/([a-zA-Z0-9]+)$ /~$1/ [PT]
* 後ろの[PT]とか何も無し*1だと suexec が効かない。
* [R]だと /~user/ にリダイレクトされてしまうので suexec は効くが URI を変えたいという点では本末転倒。
* [P]だと suexec は効くし、URI も /user/ のまま行けるが、REMOTE_HOST が全部 httpd が動いてるサーバの IP になってしまう。
* [PT] だと、suexec も効くし、URI も /user/ のまま行けるし、REMOTE_HOST もちゃんとアクセス元のままなのでマル。
[/~user/ を suexec を利用可能にしたまま /user/ でアクセス出来るようにする。より引用]
というのを見つけた。
そこで上を参考に、http.configのバーチャルホストの中に
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/page/diary/(.*)$ /~user/diary/$1 [PT]
RewriteRule ^/page/wiki/(.*)$ /~user/wiki/$1 [PT]
</IfModule>
を書いて上げて、~userでも/page/でもsuexecで呼べるように変更した。
すばしい! http://page.on-o.com/diary/ でも呼べるようになったよ。
途中、Premature end of script headers: の連打になったけど、public_htmlとtDiaryの下をtarでバックアップしていた物に戻したら、ちゃんと動くようになった。何で動くようになったのかは不明。
|