• ベストアンサー

Directory documentroot 違い

windows7 32bit apacheで初歩的な質問です。 httpd.confでのDirectoryと documentroot 違いはなんなんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

DocumentRootは、簡単に言えばWebサーバーが応答するコンテンツの置き場所を指定するものだ。 あなたのWebサイトがRIOT1970.example.comだったとして、 DocumentRoot C:/opt/Apache2.2/htdocs という設定を行っていた場合に、 http://RIOT1970.example.com/index.html にWebブラウザーでアクセスした際にindex.htmlを探す場所がC:¥opt¥Apache2.2¥htdocsになるよという事。 Directoryは、複数指定する事ができ、指定のディレクトリとその子供たちのアクセス制御とかその辺の設定を行うためのもの。例えば、先ほどと同じDocumentRootとして、以下のような設定を加えたとしよう。 Alias /test1/ "C:/Test1/" ・・・(1) <Directory /> ・・・ (2) Order deny,allow Deny from All </Directory> <Directory "C:/opt/Apache2.2/htdocs"> ・・・ (3) Order deny,allow Allow from All </Directory> <Directory "C:/opt/Apache2.2/htdocs/test2"> ・・・ (4) Order deny,allow Deny from All </Directory> ここで、 C:¥test1¥index.html C:¥opt¥Apache2.2¥htdocs¥index.html C:¥opt¥Apache2.2¥htdocs¥test2¥index.html C:¥opt¥Apache2.2¥htdocs¥test3¥index.html という風にフォルダーとファイルを作ってほしい。で、 http://RIOT1970.examples.com/index.html http://RIOT1970.examples.com/test1/index.html http://RIOT1970.examples.com/test2/index.html http://RIOT1970.examples.com/test3/index.html にアクセスすると、test1とtest2は403エラーが返ってくる。 test1の方は、Aliasの設定で/test1がアクセスされたらC:¥test1の中を探しにいくのだが、C:¥test1用のアクセス制限を設定するDirectoryが無いので親フォルダーの設定が無いか探しにいって(2)の設定が有効になる。で、それはアクセス不可の設定なのでエラーとなる。 test2は、(4)により拒否される。 test3は、自分自身のフォルダー用の設定が無いのでその親フォルダーの設定である(3)により許可されるというスンポーだ。 このように、Directoryディレクティブは階層構造になっており、子供で設定を上書きしない限り親の設定が有効になるようになる。

その他の回答 (1)

回答No.1

<Directory>とDocumentRootの違いを聞いてるんですよね? /として表示するディレクトリの位置を示すのがDocumentRoot、 ディレクトリの設定を示すのが<Directory パス名>...</Directory>です。 例えば、<Directory />の場合は、/として表示するページの設定をします。<Directory パス名>の中身にはファイル名を指定しなかったらどのファイルを表示するか、あるいは一覧表示するか、CGIの実行を許可するかなどの設定が書けます。 詳しくはマニュアルを読みましょう。 http://httpd.apache.org/docs/2.2/ja/mod/core.html#documentroot http://httpd.apache.org/docs/2.2/ja/mod/core.html#directory

関連するQ&A