- ベストアンサー
httpd.confの設定でURLを書き換える方法を探しています
- apache2をLinux上にダウンロードし、たどたどしく使い始めたものです。
- httpd.confの中の設定で、http://www.sample.com/ccfoo.cgiにアクセスすると、実際には、http://www.sample.com/cgi-bin/foo.cgiにアクセスされるようにしたいです。
- また、ブラウザのURL欄には、http://www.sample.com/ccfoo.cgiではなく、http://www.sample.com/foo.cgiが表示されるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「CGI は cgi-bin 下でのみ動作可」 はデフォルトですが変更可能です。 cgi-bin を別に名前に変更する事もできますし、指定した/任意のディレクトリ上で CGI を実行可能にする事もできます。 実体を cgi-bin 下に置いた CGI に別のURLでアクセスさせるよりも、アクセスさせたい URL に対応するディレクトリで CGI を可能にする方が良いと思いますよ。 それには、httpd.conf の適当な Directoryディレクティブの下に Options +ExecCGI と書けば良いです。 http://httpd.apache.org/docs/1.3/howto/cgi.html.ja.jis の、『ScriptAlias ディレクトリ外の CGI』の項を見てください。 # 本当は、使用している Apacheバージョンのドキュメントを見る方が良いです。 Directoryディレクティブをご存知無ければ、是非この機会に勉強しましょう。 必要になる局面は、とてもとても多いです。
その他の回答 (2)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
CGIを実行させるディレクトリは別の場所におくことが一般的です。 ただ、最近はページ自体を動的に作成して提供するシステムが多く、cgiといった拡張子すら表に見せないことも多いですね。 ひとつ誤解があるようです。HTTPサーバーが知っているパスと、サーバー上のパスは無関係です。 >(1)http://www.sample.com/ccfoo.cgi にアクセスすると、 >実際には、 >http://www.sample.com/cgi-bin/foo.cgi にアクセスされる。 この分はおかしいです。 http://www.sample.com/ccfoo.cgiを【要求すると、/user/home/cgi-bin/にある、ccfoo.cgiが実行されるようにしたい】・・・とかになるはずです。 そもそも、HTTPサーバーの動作がどのように動作するかを勉強してください。 たとえば、 http://www.sample.com/abc/ccfoo.cgi?abc ←例としてすこし変えてある。 というURLは、HTTPプロトコルで、www.sample.comというサーバーに対して、/abc/ccfoo.cgi?abcというファイルを要求するに過ぎません。 サーバーは、?以降があれば、それを環境変数[QUERY_STRING]に格納し、 1) /abc/ccfoo.cgiというファイルを探します。 →もしそのファイルが実行可能なプログラムなら、他の環境変数など とともにそのファイルに渡し、実行結果を返します。 →もし実行できないファイルなら、それを設定にしたがって提供した りエラーを返します。 →それがディレクトリなら、それを開いてそのディレクトリの設定 たとえばDirectoryIndexが設定してあれば、それを開きます。 ・・実行ファイルかもしれない 2) そうでなければ、/ccfoo.cgiをPATH_INFOに渡して、同じ動作を繰り返します。・・もちろん設定次第 ですので、こちらを使っても良い。 DirectoryIndex で、適当なファイル(foo.cgi)を指定しておいて、/ccfoo.cgiを与えてもよいし、・・ >(2)また、ブラウザのURL欄には、 >「http://www.sample.com/ccfoo.cgi」ではなく、 >「http://www.sample.com/foo.cgi」が表示されている。 は、ブラウザは自分が要求したURLを表示するのですから、これはブラウザに対してREFRESHでも指定してやらないと無理。 ブラウザの挙動とサーバーの挙動を区別し理解してください。 >探すキーワードが悪いのか、 >解決に至るページに出会うことが出来ませんでした。 apacheをインストールすると、manもインストールされるはず、英文がわからなければ、 Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ ( http://www.apache.jp/manual/ ) →設定ファイル( http://www.apache.jp/manual/configuring.html ) →ディレクティブ ( http://www.apache.jp/manual/configuring.html#scope ) にすべてあるはずです。 マニュアルに書かれている程度の内容は、聞かない。というかマニュアルの方が正しいし正確な情報があるはずです。
- askaaska
- ベストアンサー率35% (1455/4149)
Rewriteを使えばやれないことないわ。 参考: http://webtech.akijapan.com/htaccess/rewrite.phtml 私はcgi-binでもかっこ悪いとは思わないけど。