0o0dグッ

アパッチメモ

本日アクセスしまして、すでに対応済みかもしれませんが参考までに。

httpd.confを修正するか、.htaccessに次のように書いて画像を置くディレクトリに入れておけば良いでしょう。
レンタルサーバーで共用の場合は難しいかもしれませんが、root権限有りの場合は以下の要領でAddHandler文を追加すれば可能です。
ただしそのファイルを覗かれる危険性があることに注意です。

/etc/httpd/conf/httpd.conf中でcgi-binのディレクトリに表示させたい拡張子を追加後Apacheをリスタートします。

<VirtualHost 212.105.21.188:80>
以下省略

ScriptAlias /cgi-bin/ /home/www/domain1/web/cgi-bin/
AddHandler text/html .html .htm .txt .css
</VirtualHost>

これで「html」「htm」「txt」「css」の拡張子がつくファイルも表示可能です。
.gifで画像も表示できます。

■/cgi-bin/ディレクトリ配下においたCGI関連の画像やHTMLが表示できない。最終更新: 2003/11/15

[原 因]

Apacheの/cgi-bin/ディレクトリは、デフォルト設定でユーザからは直接アクセスできないCGIを置くための専用ディレクトリになっている。そこに、CGI以外の画像やHTMLが置かれアクセスされると、ApacheはそれもCGIとみなして処理をしてしまうからである。ログ上は、そのようなファイルはCGIとして動作するはずもないので、エラー500が残る。

[対 処]

対処方法としては以下の方法があるが、簡易なのは3項である。

画像等を含むCGIは、/cgi-bin/ディレクトリに置かず、ドキュメント用のディレクトリに設置し、ドキュメント用ディレクトリでCGIが実行できるようにする方法。この方法は、管理されたサーバでないと、怪しげなCGIを置かれ実行されるとどうしようもないので、注意が必要である。因みに、おやじはこの方法である。

当該CGIの設定変更もしくは改造をして、CGIのみを/cgi-bin/ディレクトリに置き、関連する画像等はドキュメント用ディレクトリに設置する方法。プロバイダがカウンタ等のCGIを用意していて、ユーザに開放しているのがこの例である。

/cgi-bin/ディレクトリに設置されていても、画像は画像として処理するように、Apacheを設定する方法。下記のように/cgi-bin/のDirectryディレクティブにAddHandlerで必要な拡張子に対する処理を追加してあげればよい。

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    AddHandler image/gif .gif  <-この行を追加
</Directory>

他の拡張子については、Apacheのconfフォルダ内(場所は異なる場合あり)にmime.typesがあるので、これを参考に必要な拡張子のものを同じように書き足せば良い。

  ex. AddHandler image/jpeg .jpeg .jpg .jpe
       AddHandler image/png .png
       AddHandler text/html .html .htm

cgi-binの中のhtml表示

Apacheのデフォルト設定では、cgi-binディレクトリ配下のhtmlファイルが表示できません。
cgi-binディレクトリ配下のhtmlファイルを表示するためには以下のように設定変更します。

1.Apache2コンフィグの変更
下記のように”httpd.conf”ファイルを変更します。
この例では、gifファイル、およびjpgファイルを表示できるようになります。
この例は「ユーザ毎にアドレスを分ける」および「cgi-binの中の画像表示」での設定もしてある前提です。

<Directory "/home/*/public_html/cgi-bin/*">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    AddHandler image/gif .gif
    AddHandler image/jpg .jpg
    AddHandler txt/html .html .htm .txt .css ←追加
</Directory>
<Directory "/home/public_html/cgi-bin/*">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    AddHandler image/gif .gif
    AddHandler image/jpg .jpg
    AddHandler txt/html .html .htm .txt .css ←追加
</Directory>

2.Apache2の再起動
次のコマンドを発行し、上記の変更を有効にするためApache2を再起動します。
Apache2のインストール先で"apachectl restart"と入力します。

3.動作確認
ブラウザからcgi-binディレクトリ配下のhtmlファイルにアクセスしてみます。
ファイルが表示できれば成功です。
また、この設定でテキストファイル、スタイルシートも使用可能になります。

【CGI(Perl)の環境変数一覧表示】

DOCUMENT_ROOT = /home/atompro.net/html/beginners
GATEWAY_INTERFACE = CGI/1.1
GEOIP_CONTINENT_CODE = AS
GEOIP_COUNTRY_CODE = JP
GEOIP_COUNTRY_NAME = Japan
HTTP_ACCEPT = */*
HTTP_ACCEPT_ENCODING = gzip, deflate
HTTP_ACCEPT_LANGUAGE = ja
HTTP_CONNECTION = Keep-Alive
HTTP_HOST = beginners.atompro.net
HTTP_REFERER = http://search.www.infoseek.co.jp/Web?qt=cgi-bin%e3%80%80%ef%bd%88%ef%bd%94%ef%bd%8d%ef%bd%8c%e8%a1%a8%e7%a4%ba&st=20&col=OW&svx=101721&svp=SEEK
HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
PATH = /sbin:/usr/sbin:/bin:/usr/bin
PERL5LIB = /usr/share/awstats/lib:/usr/share/awstats/plugins
QUERY_STRING =
REMOTE_ADDR = 202.75.232.159
REMOTE_PORT = 1417
REQUEST_METHOD = GET
REQUEST_URI = /cgi-bin/getenv.cgi
SCRIPT_FILENAME = /home/atompro.net/html/cgi-bin/getenv.cgi
SCRIPT_NAME = /cgi-bin/getenv.cgi
SERVER_ADDR = 192.168.1.100
SERVER_ADMIN = root@localhost
SERVER_NAME = beginners.atompro.net
SERVER_PORT = 80
SERVER_PROTOCOL = HTTP/1.1
SERVER_SIGNATURE =
Apache/2.2.0 (Fedora) Server at beginners.atompro.net Port 80

SERVER_SOFTWARE = Apache/2.2.0 (Fedora)
TZ = JST-9
UNIQUE_ID = eLuMyn8AAAEAACH@Y-0AAAAH

※クッキーは自分自身の情報が見えてるだけで他人に見えるわけではありません。

△ Top