http://d.hatena.ne.jp/hoge/a.php
http://d.hatena.ne.jp/test/a.php
URLで、ユーザー名を使用してディレクトリを割り当てていることがあるかと思いますが、具体的にはどのようにして、a.php を実行できるようにしているのでしょうか? httpd.conf の "UserDir"を使うのはわかるのですが、ご教授ください。
質問の意図が少し分かりにくいのですが、~(チルダ) がない事が問題でしょうか?
すべてのサーバーがこういう形かどうかは分かりませんが、自分であればこのように設定します。
AddHandler php-script .php UserDir public_html RewriteEngine On RewriteRule ^/~([^/]+)(/.*)? /$1$2 [PT,L]
テストはしていないので、若干ミスがあるかもしれません。
勘違いしていたらすみません。
httpd.confの設定を
http://wiz.syscon.co.jp/Lnxapache2.html
な設定を施すことにより 普通はユーザのディレクトリにあるPHPファイルも実行されるはずです。
http://www.miloweb.net/pastbbs/0002/457.html
にも同じような内容が載ってます。
単純に~なしのアドレスでユーザディレクトリを表示して、PHPを動作させたいなら
http://blogs.dion.ne.jp/kimiwo/archives/1215637.html
http://www.h7.dion.ne.jp/~pamo/takam/howto/mklinux/apache.html
にあるような設定をすれば、http://d.hatena.ne.jp/test/a.phpでPHPが実行可能になると思います。
ありがとうございます、質問についてですが、
個々の仮想ディレクトリにおいて、同じPHP(a.php)を実行することができるかどうかについてです。
hoge/a.php
test/a.php (URL上ではa.phpは右記のように配置されているが、ローカルのパスでは/usr/local/bin/にa.phpが置かれている。などについてです。
まえの回答にミスがあったので修正します。
AddHandler php-script .php UserDir public_html RewriteEngine On RewriteRule ^/([^/]+)(/.*)? /~$1$2 [PT,L]
すいませんが以前の質問の回答にあるリンク先が変わってしまっているようなのでどのように解決されたのか、現状どのように設定しているかが分かりません。
一応こうではないかという案だけ提案させていただきます。
RewriteEngine On RewriteRule ^/hoge/(.*) /usr/local/bin/$1 [L] RewriteRule ^/test/(.*) /usr/local/bin/$1 [L]
とすれば /hoge/a.php と /test/a.php は同じファイルが実行されます。
余談ですが、/usr/local/bin はユーザー用のコマンドが入る場所なので、公開用には /usr/local/www 等のディレクトリを作った方がいいと思います。
ありがとうございます大変参考になります。
チルダが不要になる件は、以前の質問で解決しました。http://q.hatena.ne.jp/1143614138
あと…もうひとつ質問がありまして、
UserDirを使わない方法はありますでしょうか?
つまり、Symlinkを作成せずとも、仮想ディレクトリのリストを用意しておけばApache上で、仮想ディレクトリを作成することが可能でしょうか?