ApacheのDirectory指示子でわからない

このQ&Aのポイント
  • Windows2000pro、apache2.0.55の環境で、Directory指示子の使い方がわからない。
  • 特定のディレクトリにForceType指示子を使って強制的にMIMEを設定したいが、絶対パスと相対パスでの指定方法について問題がある。
  • 解説書によると、Directory指示子での/はServerRoot指示子で指定されたディレクトリを指すが、相対パスでの指定では上手く動作しない。
回答を見る
  • ベストアンサー

apacheのDirectory指示子でわからない

Windows2000pro,apache2.0.55です。 Directory指示子の使い方がいまいちわかりません。 あるディレクトリ(たとえばtest)にForceType指示子で強制的にMIMEを設定したいのですが、 <Directory "C:Program Files/Apache Group/Apache2/htdocs/test"> ForceType image/gif </Directory> と直接絶対パスで指定するとうまくいくのですが、 <Directory /htdocs/test> ForceType image/gif </Directory> と/からの相対パスにするとうまくいかないのです。 手元の解説書によると、Directory指示子での/とはServerRoot指示子で指定されたディレクトリを指す、とあります。 ServerRoot指示子の値は "C:Program Files/Apache Group/Apache2" となっています。 ということは <Directory /htdocs/test> という指定で <Directory "C:Program Files/Apache Group/Apache2/htdocs/test"> と同じ意味になるはずなのですが、そうはなっていないのです。 どこがまずいのでしょうか? よろしくお願いいたします。

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

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

 ん~。DirectoryディレクティブはOS内の物理ディレクトリの設定をするような気がしなくもない。(うろ覚え)  取り急ぎ、Directoryの変わりにLocationディレクティブを使ってみるとどうなるだろうか。 <Location /htdocs/test> ForceType image/gif </Location>

tochanx
質問者

お礼

ありがとうございます。 Locationで無事解決致しました。 どうやらいろいろな資料を読んでいくうちに頭が混乱していたようです。 <Directory /> という記述でServerRootへの設定が可能なら、 <Directory /~/~> といろいろな指定ができるものだとばかり勘違いしておりました。 ディレクトリベースの指定はDirectoryで、URLベースの指定はLocationでということなのですね。

関連するQ&A

  • Apacheのmod_rewriteでURLの書き換え

    Apacheのmod_rewriteでURLを書き換えたいと思います。 ルートデイレクトリは"C:/Program Files/Apache Group/Apache2/htdocs"です。   そして、http://localhost/sample/ と打ったときに、"C:/Program Files/Apache Group/Apache2/htdocs/sample"ではなく、"C:/tmp/test"にアクセスされるようにするには、httpd.confにどのような設定を追加すればよいのでしょうか? Apache 2.0.63 Windows Vista

  • Apacheディレクトリの設置場所

    みなさん、はじめまして。yyuu5124です。 ApacheとPHP、PostgreSQLを使って、システムのプログラミングを行っております。 先日、職場でネットワークの更新が行われました。 それ以降いつものようにエディタ(秀丸)でスクリプトを書いて保存しようとすると、次のようなエラーが表示されます。 「このファイルを書き込み許可で開くことができませんでした。 ~中略~ 強制的に開きますか」 いろいろと調べていくと、どうもApacheのhtdocs配下だけがこうなります。 現在のOS環境はXPで、「C:\Program Files」配下にApacheを置いています。 「OSがVista以降なら、ApacheをProgram Files配下に置くと、アクセス拒否される」、とよくサイトに書かれています。 しかしXPの環境下でも、こんなことが起こりえますか。 やはりProgram Files以外のディレクトリに置いたほうが、無難ですか。 その場合Apacheを再設定するときの注意事項があれば、教えてください。 それともただ単にadministratorで入り、htdocs以下に権限を与えればいいことですか。 その辺があやふやで、悩んでいるところです。 ご回答のほど、よろしくお願いします。

    • ベストアンサー
    • PHP
  • apacheのScriptAliasの記述について

    どなたか,ご教授いただければ幸いです。 WindowsXp Proでapacheを動かしています。次の設定で,cgiはうまく動作していました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> --- これに, http://www.miloweb.net/win/server/apache.html を参考にして,各ユーザーフォルダでcgiが実行できるようにしようと,次のようにしました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> <IfModule mod_userdir.c> UserDir \"C:/www/users/*/\" </IfModule> <Directory \"C:/www/users/*/cgi/\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jp </Directory> --- その結果, http://localhost/~user/ としてuserのホームページにアクセスできるようになったのですが, cgiについては, http://localhost/~user/cgi/・・・ としてもアクセスできません。どなたか原因をご教授いただけないでしょうか。 ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" の行を入れ替えると,\"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\"においてあるcgiが実行できなくなります。ScriptAliasは1行目しか有効でないようにも見えるのですが,上に書いた参考URLではできているようなので,戸惑っています。

  • htmlにCGIプログラムの埋め方。

    window2000+apache2+perl5の環境ですが。 ディレクトリの構成: c:\Program Files\Apache Group\apache2 apache2にcgi-bin とhtdocsの二つのディレクトリがあり、 cgi-binにwforum.cgiというCGIプログラムがあるとします。 \htdocs\index.htmlを次のように作りました: ------------------------------------ <html> <head> <title> test page </title> </head> <body> ここに”BBS 行き”というハイパーテキスト をクリックしたら、wforum.cgiを実行してくれる </body> </html> -------------------------------------- 上のようなプログラムをどう作れますか。できれば、相対 パスを使いたいです。

    • ベストアンサー
    • CGI
  • Apache2.2環境でPerlで参照したgifが表示できません!

    Apache2.2環境でPerlで参照したgifが表示できません! 今まで自分のPC(Windows Me)でHP(@niftyで公開しています)にアップする前のデバック環境としてApacheとActivePerlをダウンロードをして構築していました。 全く問題無く動作をしていたのですが、PCのハードが調子が悪くなりとうとう動かなくなりました。そこで、この際最新OSのWindows7版PCを購入して可能な限り同じ環境を再構築しようと努力をしているのですが、どうも上手く行かないため助けてください! 今回の環境は、OS=Windows7、Apache=2.2、ActivePer=l5.12です。 Apache=2.2のhttpd.confファイルの内容が以前のものと違うので、このhttpd.confの修正漏れだとは思うのですが・・・ 具体的には、TOPページはhtmlで記述し、そのhtmlからPerlプログラムを呼び出す形を取っています。 htmlではgifが正常に表示されるのですが、同じgifをPerlからも参照をしているのですが、gifの絵が表示されません。しかしながら、gifに張ったリンクは正常で、制御は正しくリンク先に移行します。 gifファイルは、下記に在ります。  c:/Program File/Apache Group/Apache2/htdocs/GIF/button-fix.gif Perlプログラムは、下記のようにしています。  $gif_dir = 'c:/Program Files/Apache Group/Apache2/htdocs';  ・・・・  <INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\"> そして、気になる事があります。  $top = 'c:/Program Files/Apache Group/Apache2/htdocs/index.htm';  ・・・・  <A href=\"$top\"><IMG src=\"$gif_dir/GIF/button-fix.gif\" border=\"0\">\">  と記述したgifアイコンにマウスを持って行くと、ウィンドウの左下のリンク先アドレスを表示するエリアに下記のように、字化け(スペースが%20になっている)しているように表示されてこのアイコンだけはクリックしても正しく動作をせず、ノンオぺレーションです。  file:///c:/Program%20Files/Apache20Group/Apache2/htdocs/index.htm'  この程度の情報で原因が判りますでしょうか?  よろしく、お願い致します。

    • ベストアンサー
    • Perl
  • Darwin Streaming Serverがうまくインストールできません

    こんばんは。 いまwindows2000環境で自サーバーのテスト構築中です。 apache_1.3.28-win32-x86-src.msi php-4.3.3-Win32.zip ActivePerl-5.8.0.806-MSWin32-x86.msi と順調にインストールできたのですが、 DarwinStreamingSrvr4.1.3-Windows.exe をインストールしたところ http://localhost:1220/ にアクセスしても『サーバーが見つからないか、DNS エラーです。』が出てしまいます。 Apacheをインストールしたときに、httpd.confを DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs" ↓ DocumentRoot "C:/apache/www" <Directory "C:/Program Files/Apache Group/Apache/htdocs"> ↓ <Directory "C:/apache/www"> のように変更したからでしょうか。 原因がよくわからなくて困っています。

  • CGIの設置ができません。

    Apacheのhttpd.confを設定して、aska.cgiという掲示板を動かそうとしているのですが、うまく動きません。 色々調べた結果、httpd.conf内のOptionというところにExec CGIを追記すればいいとのことだったので、 <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> としましたが、 Options ExecCGI is off in this directory: C:/Program Files/Apache Group/Apache2/htdocs/aska/aska.cgi, referer: http://localhost/aska/ とerror.logには表示されてしまいます。 ちなみにaska.cgiは C:/Program Files/Apache Group/Apache2/htdocs/aska/ に入っています。 よろしくお願いします

  • Apacheで特定のファイルのみアクセス許可したい

    httpd.confの末尾に次の記述をしてapacheをリスタートしtop.htmlにアクセスしても 403エラーとなりアクセスできません。原因が分かる方よろしくお願いします。 <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/aaa"> Order deny,allow Deny from all SetEnvIf REFERER localhost referer_ok Allow from env=referer_ok </Directory> <Files "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/aaa/top.html"> Order allow,deny Allow from all </Files>

    • ベストアンサー
    • HTML
  • SSI される .inc ファイル内に PHP を記述したい…が…

    お世話になっております。 .html から、SSI で .inc ファイルを呼び出し、その inc ファイル 内に記述の PHP を実行したいと考えております。 例えば、test.html に   <!--#include virtual="../include/inc/meta.inc"--> のような記述があり、include.inc に   <?php echo "test"; ?> のように記述があった場合、php4 では test と表示されるのですが、 php5 では、   <?php echo "test"; ?> がそのまま出てきてしまいます。 php4 と php5 の httpd.conf の違いは   LoadModule php4_module C:/php446/sapi/php4apache2.dll   LoadModule php5_module c:/php525/php5apache2.dll の行のみです。(いずれかをコメントにし、4と5を切り替え) 以下、httpd.conf の SSI の動作に影響を及ぼすと思われる 行を抜粋します。(コメント行も含みます) 環境は WINDOWS&Apache2 です。 <Directory /> Options FollowSymLinks MultiViews Includes ExecCGI AllowOverride All </Directory> <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> Options All AllowOverride None Order allow,deny Allow from all </Directory> AddType application/x-httpd-php .inc .html .php #AddHandler server-parsed .shtml .html #AddType text/html .shtml .html .inc AddOutputFilter INCLUDES .shtml .html .inc #<Files *.html> #ForceType text/html #SetOutputFilter INCLUDES #</Files> #<Files *.shtml> #ForceType text/html #SetOutputFilter INCLUDES #</Files> #<Files *.inc> #ForceType text/html #SetOutputFilter INCLUDES #</Files> 原因は php.ini ですかね? ご存知の方、ご教授下さい。

    • ベストアンサー
    • PHP
  • xamppをlocalhostに設定する方法

    助けてください!! xamppをlocalhostに設定するには・・・? 今まで、Apache-groupのhtdocsをlocalhostとして使用していたのですが、MySQLがうまく動かないため、一括でできるxamppをインストールしました。 この状況で、「http://localhost/」をブラウザから開くと、c:\program files\apache group\htdocsの下のindex.htmlが開き、xamppをインストールしたc:\program files\xampp\htdocsのindex.htmlを認識しません。 localhostの参照パスの変更はどのように行なうのでしょうか?? どなたか、分かる方教えてください。。。