- PR -

Apacheのユーザーディレクトリにチルダを使いたくない

投稿者投稿内容
Hanes
会議室デビュー日: 2005/03/18
投稿数: 6
投稿日時: 2005-03-20 01:59
はゆる様

返答ありがとうございます。
えっと、AliasMatchを利用したときのsuexecのログで良いのでしょうか?
AliasMatchを利用するとユーザーディレクトリのCGIもDocumentRootの実行者の権限
で動かそうとしてしまうため以下のようなエラーがでてしまいます。

target uid/gid (10001/1001) mismatch with directory (40000/1003) or program (40000/1003)

違う場合のログでしたらおっしゃっていただければ提示します。
Hanes
会議室デビュー日: 2005/03/18
投稿数: 6
投稿日時: 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

を追加しておきました。
さすがなんでも切れるナイフです^^
皆様色々な情報ありがとうございました

スキルアップ/キャリアアップ(JOB@IT)