- - PR -
Apacheのユーザーディレクトリにチルダを使いたくない
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-20 01:59
はゆる様
返答ありがとうございます。 えっと、AliasMatchを利用したときのsuexecのログで良いのでしょうか? AliasMatchを利用するとユーザーディレクトリのCGIもDocumentRootの実行者の権限 で動かそうとしてしまうため以下のようなエラーがでてしまいます。 target uid/gid (10001/1001) mismatch with directory (40000/1003) or program (40000/1003) 違う場合のログでしたらおっしゃっていただければ提示します。 |
|
投稿日時: 2005-03-20 03:40
未記入様のアドバイスどおりmod_rewriteを用いて多少強引ですが解決いたしました。
同様の悩みに遭遇した方のために詳細を乗せておきます。 UserDir public_html はそのままです。 ですのでhogeユーザーのURLは 通常では http://www.foo.com/~hoge/ となります。 これを RewriteRule の[PT]を用いて書き換えます 1:RewriteEngine on 2:RewriteRule ^/([a-zA-Z0-9]+)/(.*) - [C] 3:RewriteCond /home/$1/public_html/$2 -f [OR] 4:RewriteCond /home/$1/public_html -d 5:RewriteRule ^/([a-zA-Z]+)/(.*) /~$1/$2 [PT] 6:RewriteRule ^/([a-zA-Z]+)$ /~$1/ [PT] 書き換えのみの場合1,5,6のみで大丈夫です。 私の場合 /home/httpd/mine がDocumentRootになっているため、2,3,4を加えて 対応したユーザーディレクトリおよびファイルがある場合のみrewriteすることにしました。 また、これだけですと通常の http://www.foo.com/~hoge/ でも見れてしまうので アクセスするURLが異なることを伝えるメッセージ表示するCGIを作って RewriteCond %{REQUEST_URI} ^/~([a-zA-Z]+)/(.*) RewriteRule .* /merror.cgi を追加しておきました。 さすがなんでも切れるナイフです^^ 皆様色々な情報ありがとうございました |