投稿日:2003年03月31日 作成鷹の巣

No.9322 win32のApacheのバーチャルホストで、CGIエイリアスを設定する方法は?



win32のApacheのバーチャルホストで、CGIエイリアスを設定する方法は?

No.9322 投稿時間:2003年03月31日(Mon) 12:12 投稿者名:sanyo URL:

初めまして。つい最近にWIN32版APACHEを導入したばかりです。
質問なんですが、家族で共用しようと思いまして、http://111.net/~titi/http://titi.111.net/
で表示できるようにマニュアルどおり、httpd.confを設定しました。

NameVirtualHost *

<VirtualHost *>
ServerName 111.net
DocumentRoot D:/***/Apache/htdocs
</VirtualHost>

<VirtualHost *>
ServerName titi.111.net
DocumentRoot D:/***/Apache/kazoku/titi/public_html
ScriptAlias /cgi-bin/ D:/***/Apache/kazoku/titi/public_html/cgi-bin
</VirtualHost>

と、設定し、titi.111.netのIPを自分のPCに向けるように設定したら見事、
http://titi.111.netでD:/***/Apache/kazoku/titi/public_htmlを見ることが出来ました。
しかし、思わぬ落とし穴で、なぜか、CGIを呼び出すときのルートが
http://titi.111.net/cgi-bin/ではなく、http://titi.111.net/~titi/cgi-bin/でないと呼び出せません。

全くの素人でゴメンナサイ。アドバイスをください。


VirtualHostタグ以外のところで、/cgi-binの設定してある項目がありませんでしょうか?

No.9329 投稿時間:2003年03月31日(Mon) 15:44 投稿者名:さすらいのGさん URL:

VirtualHostのログも取るように設定してみてください。おそらく、
titi.111.net/cgi-binのアクセスが、本来のcgi-binに飛んでいるのではないでしょうか?
VirtualHostタグ以外のところで、/cgi-binの設定してある項目がありませんでしょうか?


ScriptAliasではなく、<Directory hogehoge>で直接実行権を与えています。

No.9330 投稿時間:2003年03月31日(Mon) 15:48 投稿者名:さすらいのGさん URL:

私の場合は、Linuxでの、apache1.3ですが、ScriptAliasではなく、
<Directory hogehoge>で直接実行権を与えています。


二つの形式の共用は無理なのでしょうか?

No.9337 投稿時間:2003年03月31日(Mon) 18:00 投稿者名:sanyo URL:

> VirtualHostタグ以外のところで、/cgi-binの設定してある項目がありませんでしょうか?

はい。一応、例ですが、ユーザー名『haha』というのはhttp://111.net/~haha/で表示させたいので、
<IfModule mod_alias.c>の方で
ScriptAlias /cgi-bin/ "D:/***/Apache/kazoku/haha/public_html/cgi-bin/"
と、最初にCGIを設定したときのままに設定してあります。

やはり二つの形式の共用は無理なのでしょうか?


やはりLINUXとWINDOWSの差でしょうか?

No.9364 投稿時間:2003年04月01日(Tue) 17:44 投稿者名:sanyo URL:

分かりませんかね・・・

やはりLINUXとWINDOWSの差でしょうか?


<VirtualHost>タグ内で再定義してあげれば、混在しないで認識するはずです。

No.9365 投稿時間:2003年04月01日(Tue) 18:53 投稿者名:さすらいのGさん URL:

ScriptAliasを勘違いされていませんか?

私も最初はまったんですが、ScriptAliasの利用目的の大きな要素は2つ。
存在しない実行権のあるディレクトリをエイリアスによって定義することと、
public_html以下に、cgi-binがあるのではなく、平行に存在する場合にURLにて、
cgi-binが参照できない場合などだと思ってるんですが・・・<突っ込み歓迎

たぶん、やりたいことは、以下のようにしたいわけですよね?
hoge.com , hoge.com/cgi-bin
a.hoge.com , a.hoge.com/cgi-bin
hoge.com/~b , hoge.com/~b/cgi-bin

hoge.comは、バーチャル外での定義とバーチャル内で両方で定義する
a.hoge.comは、バーチャル内の定義
たぶん、こういう状態かと・・・

#ディレクトリ構造は、Redhatを基準に書いていますので適当に置き換えてください。

<Directory /var/www/cgi-bin>というのがありますよね?これは、本来のDocumentRootが、/var/www/htmlとなっていますので、
cgi-binは、URL上は、/var/www/html/cgi-binと解釈されなければいけません。
だから、ScriptAlias /cgi-bin /var/www/cgi-binと書かれている訳です。

単純に言えば、/var/www/html/cgi-binと作ってしまえば、ScriptAliasは必要ないと言うことです。
同じ理屈で、a.hoge.com/cgi-binについても同様で、a.hoge.comのDocumentRoot以下にcgi-binを作成してしまえば、
問題ありません。

その代わり、<Direcory /var/www/html/cgi-bin>*</Directory>などとして、権限は割り当ててあげてください。

CGIの実行権が必要な分だけこのタグを書いてあげるだけです。

/~Userが多い場合には、httpd.conf内で正規表現が使えたはず(Win32は不明)ですので、一括して定義もできたと
思います。

どうしても、ScriptAliasでやりたい場合は、<VirtualHost>タグの外で定義されているScriptAliasをコメントアウトして、
<VirtualHost>タグ内で再定義してあげれば、混在しないで認識するはずです。

私のところはこれで動作はしておりますが、ちょっと説明には自身がありません。


上手くいきませんでした。

No.9378 投稿時間:2003年04月02日(Wed) 21:03 投稿者名:sanyo URL:

>hoge.com , hoge.com/cgi-bin
>a.hoge.com , a.hoge.com/cgi-bin
>hoge.com/~b , hoge.com/~b/cgi-bin
はい。上記のことがやりたいです。

しかし、教わった方法で聞きたいことがあります。CGIの実行権を与える記述を
↓としましたが、それを何処に記述すればいいでしょうか?
<Directory "D:/***/Apache/kazoku/titi/public_html">
AllowOverride all
Options MultiViews ExecCGI IncludesNoExec
Order allow,deny
Allow from all
</Directory>

あと、もう一つ。考えたのですがむりでした。あと、http://titi.111.net/http://111.net/~hahaでアクセス可能ですが
なぜかhttp://titi.111.net/~haha/でアクセスが出来る不思議な事態がおきてます。

本当にすみません。


httpd.confを片っ端からcgi-binで検索しても見つかりませんか?

No.9381 投稿時間:2003年04月02日(Wed) 22:34 投稿者名:さすらいのGさん URL:

> しかし、教わった方法で聞きたいことがあります。CGIの実行権を与える記述を
> ↓としましたが、それを何処に記述すればいいでしょうか?
> <Directory "D:/***/Apache/kazoku/titi/public_html">
> AllowOverride all
> Options MultiViews ExecCGI IncludesNoExec
> Order allow,deny
> Allow from all
> </Directory>

<Directory "D:/***/Apache/kazoku/titi/public_html/cgi-bin">
AllowOverride all
Options MultiViews ExecCGI IncludesNoExec
Order allow,deny
Allow from all
</Directory>
cgi-binまで入れないと、~haha/以下に実行権が与えられてしまいます。
WIN32の方はデフォルトでどういう設定か分かりませんが、Linuxだと、
<Directory /var/www/cgi-bin>というのが必ずあります。
この前後にでも入れておけば間違いないです。

<Directory ...>
</Directory>

<Directory ...>
</Directory>
こういう感じで・・・

apacheをソースからビルドするとデフォルトのDocumentRootは、htdocsあたりになったと思うのですが、
httpd.confを片っ端からcgi-binで検索しても見つかりませんか?

> あと、もう一つ。考えたのですがむりでした。あと、http://titi.111.net/http://111.net/~hahaでアクセス可能ですが
> なぜかhttp://titi.111.net/~haha/でアクセスが出来る不思議な事態がおきてます。

これは当然こうなると思うんですが、ユーザをドメイン毎に切り分ける方法もあったと思います。
ちょっと、実験してみますが、少し時間ください。


実行権についてですが、CGIのほうだけは正常に作動しました。

No.9460 投稿時間:2003年04月06日(Sun) 18:16 投稿者名:sanyo URL:

有難うございます。

実行権についてですが、CGIのほうだけは正常に作動しました。


VirtualHost設定時に、UserDirを見せない方法?

No.9471 投稿時間:2003年04月07日(Mon) 15:04 投稿者名:さすらいのGさん URL:

相変わらず時間に追われていて実験環境が整わないので、とりあえず以下のことを試してみてください。

<IfModule mod_userdir.c>
UserDir public_html
</IfModule>

この部分を探してコメントアウトしてみてください。
で、~userが必要なドメインの<VirtualHost>タグの中に上記の設定を入れてみてください。


|目次|掲示板|過去ログ目次|▲頁先頭|