人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Apacheのバーチャルホスト設定と環境変数について質問いたします。
http://sub.example.com を /home/exmaple.com/plublic_html/sub/ に割り当てる際のバーチャルホスト設定として、下記の3種の方法を試したところ、それぞれ異なる環境変数のDOCUMENT_ROOTを返しました。

(1) VirtualHost
<VirtualHost *>
DocumentRoot /home/example.com/public_html/sub/
ServerName sub.exmaple.com
</VirtualHost>

結果 /home/example.com/public_html/sub/

(2) mod_rewrite
<VirtualHost *>
DocumentRoot /home/example.com/public_html/
ServerName example.com
ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule (.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.example\.com(.*) /home/example\.com/public_html/$1/$2 [L]
</VirtualHost>

結果 /home/example.com/public_html/

(3) mod_vhost_alias
UseCanonicalName Off
VirtualDocumentRoot /home/%2+/public_html/%1

結果 /home

そこで質問なのですが、(2)または(3)のドキュメントルートを、(1)の状態で扱うようにしたい場合はどのような設定が必要になりますでしょうか。
環境変数のDOCUMENT_ROOTを参照して動作するスクリプトの挙動が異なってしまうため質問いたしました。

●質問者: すかなび
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apache example.com HOME M$ mod_rewrite
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● b-wind
●60ポイント ベストアンサー

Apache の環境変数 - Apache HTTP サーバ

環境を操作するディレクティブを使って標準 CGI 変数を上書きしたり変更したりすることはできません。

それぞれの DOCUMENT_ROOT の値は正しいし(3に付いては多少不思議に思うが)

標準 CGI 変数として定義されているので他の方法では変更不能。

mod_cgi 自体を改変するという事も出来無くはないだろうが複雑な割にメリットが少ない。


DOCUMENT_ROOT 以外の変数を利用するのが正攻法だと思うが。

◎質問者からの返答

やはりそうなってしまいますか・・・

管理するドメインが多くなってしまったため、VirtualHostから(2)(3)に変えたところ

phpmyadminなどが正常に動かなくなってしまい、原因を詰めていったところDOCUMENT_ROOTの違いにあることがわかりました。

やはり楽しようとせず、VirtualHostのままがよさそうですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ