- ベストアンサー
Apache2でのバーチャルホストの設定について
現在、メインのサーバhoge.ddo.jpにてApache2によるWebサーバを構築しています。 今回要望があり、ユーザのHPを別のドメインabc.dip.jpにバーチャルホストを利用して運営することになりました。 そこで質問なのですが、 http://abc.dip.jp/ にアクセスすることでユーザのHPにアクセスできます。しかし、 http://hoge.ddo.jp/~misa/ (misaはabc.dip.jpのHPを利用するユーザ) にアクセスしても同じ結果が得られてしまいます。 これを、 http://hoge.ddo.jp/~misa/ でアクセスした場合には、HPを表示できなくしたいのですが、このように設定することはできるのでしょうか? よろしくお願いします。 設定( /usr/local/etc/apache2/httpd.conf ) DocumentRoot "/usr/local/www/data" ServerName hoge.ddo.jp:80 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp </VirtualHost> <VirtualHost *:80> DocumentRoot /home/misa/public_html ServerName abc.dip.jp </VirtualHost> 環境 FreeBSD 5.4-Release-p2 Apache 2.0.54
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
hoge.ddo.jpのVirtualHostセクションを以下のようにしたらどうでしょうか? <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp UserDir disabled misa ← この行を追加 </VirtualHost>
その他の回答 (3)
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
#1です。 ちょっと説明不足でした。 Userdir abcdefg というのは、「でたらめの文字」を意味することでした。 確実そうなのは・・・ Userdir public_html ←VirtualHostではない所 (中略) <VirtualHost *:80> DocumentRoot /home/misa/public_html ServerName abc.dip.jp UserDir /dev/null ←ここだけを変更 </VirtualHost> です。 403 アクセス非拒否が帰るはずです。
お礼
ymdaさん ご回答ありがとうございます。 当方の説明不足ですみません。hoge.ddo.jpでも既に他のユーザのHPが設置してあります。 > Userdir public_html ←VirtualHostではない所 > (中略) > <VirtualHost *:80> > DocumentRoot /home/misa/public_html > ServerName abc.dip.jp > UserDir /dev/null ←ここだけを変更 > </VirtualHost> アドバイスされた方法を試してみたのですが、特に今までと状況は変わらないみたいでした。 http://abc.dip.jp/ http://hoge.ddo.jp http://hoge.ddo.jp/~misa/ http://hoge.ddo.jp/~abc/ (abcは他のユーザ) の全てでアクセスすることができました。 UserDir public_html <VirtualHost *:80> DocumentRoot /home/misa/public_html ServerName abc.dip.jp UserDir /dev/null </VirtualHost> 試しに、以下のように設定してみたところ、 http://abc.dip.jp/ OK http://hoge.ddo.jp OK http://hoge.ddo.jp/~misa/ NG http://hoge.ddo.jp/~abc/ (abcは他のユーザ) NG という結果になりました。 <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp UserDir /dev/null </VirtualHost> 別ドメインで、運営予定のabc.dip.jpのユーザmisaだけ、 http://hoge.ddo.jp/~misa/でアクセスできないようにして 他のユーザ(abcなど)は http://hoge.ddo.jp/~abc/でアクセスできるようにするという設定は無理なのでしょうか? お手数ですが、よろしくお願いします。
- Lean
- ベストアンサー率72% (435/603)
No.1の方が言っているUserDirディレクティブを追加する対象のVirtualHostセクションは、「abc.dip.jp」の方ではなくて「hoge.ddo.jp」の方では? UserDirを「public_html」以外にする事によってhttp://hoge.ddo.jp/~user/でアクセスした時のHTMLファイル等の参照ディレクトリを現在ある$HOME/public_html以外にしステータスコード404(Not Found)にしようとするわけですから。 ↓修正対象VirtualHostセクション <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp </VirtualHost>
お礼
Leanさん ご回答ありがとうございます。 UserDirの意味が分かりました。 UserDir public_html の箇所をバーチャルホストのディレクティブで上書きするという意味だったのですね。 当方の説明不足ですみません。実は、既にhoge.ddo.jpでもユーザのHPが設置してあり、 <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp UserDir /usr/local/www/data </VirtualHost> とすると、確かに http://hoge.ddo.jp/~misa/ではアクセスできないのですが、 他のユーザ(http://hoge.ddo.jp/~abc/)もアクセスできなくなってしまいます。
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
案外、こういう設定がちゃんと通ったりします。 お試しアレ Userdir public_html (略) <VirtualHost hostname> ServerAdmin ****@*****.cx DocumentRoot /home/ほにゃらら ServerName hostname Userdir abcdefg ←ここ </VirtualHost>
お礼
ymdaさん ご回答ありがとうございます。 アドバイスの通り、 UserDir public_html <VirtualHost *:80> DocumentRoot /home/misa/public_html ServerName abc.dip.jp UserDir /home/misa/public_html ←変更箇所 </VirtualHost> と変更し、ApacheをReloadしたのですが、 http://hoge.ddo.jp/~misa/ にアクセスするとHPが表示されてしまいます。 UserDirの指定の仕方が悪いのかと思い、 UserDir abc.dip.jp UserDir misa 等、変更してみたのですが結果は変わらなかったです。 Userdir abcdefg ←ここ ↑のabcdefgの箇所は、どのように指定すればよろしいのでしょうか? お手数ですが、よろしくお願いします。 > Userdir public_html > > <VirtualHost hostname> > ServerAdmin ****@*****.cx > DocumentRoot /home/ほにゃらら > ServerName hostname > Userdir abcdefg ←ここ > </VirtualHost>
お礼
Leanさん ご回答ありがとうございます。 <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp UserDir disabled misa </VirtualHost> UserDir disabled misa の行を追加することでできました。 ありがとうございました。 余談ですが、http://abc.dip.jp/でアクセスした場合でも、/home/の設定が反映されるんですね。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI </Directory>