• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:httpd.conf 内の設定に関して)

httpd.confの設定でURLを書き換える方法を探しています

このQ&Aのポイント
  • 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が表示されるようにしたいです。

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

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.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)
回答No.2

 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)
回答No.1

Rewriteを使えばやれないことないわ。 参考: http://webtech.akijapan.com/htaccess/rewrite.phtml 私はcgi-binでもかっこ悪いとは思わないけど。

関連するQ&A

専門家に質問してみよう