同じCGIを使ってサービスしているサイトで、URLにCGIのファイル名を含むサイトと
含まないサイトがあります。例えば bbs.cgi というCGIだとすると、
(A) http://foo.com/bbs.cgi/page01
(B) http://bar.com/page01
というサイトがあります。この違いはどこから来るのでしょうか?
同じCGIを入手してインストールしましたが、現状(A)の状態です。
(B)のようにしたいと思っていますが、やり方が分かりません。
よろしくお願いいたします。
No.1
- 回答日時:
「(B)のようにしたいと思っていますが、やり方が分かりません。
」それが掲示板の場合、ページをフレーム構成にして、掲示板のタイトルだけのページとcgiのページ(http://foo.com/bbs.cgi)を上下に表示するだけのindex.htmlを「bar.com/page01」に配置すれば、cgiの部分を隠せます。
例) タグとして認識されないように、わざと2バイト文字で記載
<frameset rows=”100、*”>
<frame src=”header.html” scrolling=”no”>
<frame src=”http://foo.com/bbs.cgi”>
</frameset
この回答への補足
やって見ましたがフレームだけ表示されてCGI部分は表示されませんでした。
(src= に指定したURL単独では表示されることは確認しています)
また、(B)のようにアクセスできるサイトのページソースを見てみましたが、
frameタグは使用していませんでした。
よろしくお願い致します。
No.2
- 回答日時:
いくつか方法があります。
ABCというファイル名にして、そのファイルがCGIだとサーバーに認識させる。
ABC/ディレクトリに、index.cgiなどの名前で保存し、DIRECTRY INDEXに記載してあるファイル名にindex.cgiを含め、かつそれより上位のファイルを置かない
http://bar.com/page01
apacheのhttpd.confにて、
<IfModule dir_module>
DirectoryIndex index.html index.htm index.cgi index.sh
</IfModule>
としてある場合、index.html index.htm がないと、index.cgiがDirectryIndexとして利用されます。
また、index.htmlをCGIにしても構いません。
AddType application/x-httpd-cgi index.html ;
★この場合、下位ディレクトリにあるすべてのindex.htmlがCGIとして実行されようとするためまずいですね。
なお、page01はPATH_INFOとして使われているのでしょう。
この回答への補足
DirectoryIndexに直接CGIファイル名を指定する事により、
「トップページを開く時にCGIファイル名を省略すること」は出来ています。
例えば http://foo.com/ と入力すると http:/foo.com/bbs.cgi として処理されます。
しかし、http://foo.com/page01 と入力しても http:/foo.com/bbs.cgi/page01 は
開きませんし、そもそもCGIが生成するページ内のリンクもそのようにはなっていません。
つまり、最初 http://foo.com/ として開くことは可能ですが、CGIが生成した
ページ内のリンクをクリックすると http://foo.com/bbs.cgi/hoge 等のように
普通にCGI名を含んだリンクのアクセスになってしまうこと言うことです。
実際のサイトでは、(B)はページ内のリンクも全てCGIファイル名を含まないURLで
構成されており、どこをどうアクセスしてもURLにCGIファイル名は出て来ません。
また、同CGIを使ったサイトでは(B)が多数派で、(A)は少数派です。
この差がどこから来るのか分かっていません。
No.3ベストアンサー
- 回答日時:
配布されているCGIの説明に、htaccessの項目があると思うので、探してみてください。
この回答への補足
見た限り配布物に説明は無かったのですが、関連サイトでおっしゃる通り
.htaccess に rewrite を記述する方法が載っていました。
方法はこれで間違いないようです。
残念ながら、説明通りに記述し、エラーも出ておらず、mod_rewrite も有効と
思われるのですが、期待に変化は見られません。
解決しました。
同CGIの解説サイトから、.htaccessの記述をコピペしていたのですが、
それでは記述が足りなかったようです。
mod_rewrite の仕様を確認して自分で記述し直したら期待通りの動作となりました。
ありがとうございました。
No.4
- 回答日時:
>つまり、最初
http://foo.com/ として開くことは可能ですが、CGIが生成した>ページ内のリンクをクリックすると http://foo.com/bbs.cgi/hoge 等のように
>普通にCGI名を含んだリンクのアクセスになってしまうこと言うことです。
・http://foo.com/page01 と入力しても http:/foo.com/bbs.cgi/page01 は
開きません
これはサーバーの設定です。PATH_INFOに格納して上位ディレクトリを探す設定が外してある。
mod_rewrite
Options FollowSymLinks
を確認
・、CGIが生成したページ内のリンクをクリックすると http://foo.com/bbs.cgi/hoge 等のように普通にCGI名を含んだリンクのアクセスになってしまう
それはCGIのほうがおかしい。リンク先が、相対配置で ./hoge となっていれば、ユーザーエージェントは、http://foo.com/hogeのしなければならない。
環境変数
SCRIPT_FILENAME
SCRIPT_NAME
PATH_INFO
の処理を確認してください。
この回答への補足
apache.conf で mod_write をロードしようとすると、すでに build in である旨の
メッセージが表示されます。FollowSymLinks は設定しています。
(回答3の補足に書いたのですが、.htaccess に rewriteの設定を記述しました)
CGIは同じCGIで多数のサイトが稼働していますので、間違いはないと思います。
rewriteの設定後、ページの再構築をしないとすぐには反映されない、
との事のでしたので、念のため再構築してみましたが、現状では
rewriteの設定自体が効いていないようなので、変化ありませんでした。
.htaccess は機能しており、Rewrite の記述に関してエラーは出ていません。
もう一歩だと思うのですが・・・。確認するべき点があったら教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- CGI 「CGIにより定義されていない」とは・・・ ? 3 2023/01/01 12:00
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- その他(プログラミング・Web制作) robots.txtが”allow”のサイトを探しています 2 2022/10/09 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のindex.htmlが存在するホ...
-
XREA使用で作成したHTMLファイ...
-
HPを転送したのですが・・・。
-
サーバー内のフォルダにある写...
-
1つ下の階層のフォルダに相対...
-
既存ウェブサイトをWordPressへ...
-
webサイトの「index」を非表示...
-
Matlabでforやifを使わずに条件...
-
ホームを index.html から inde...
-
複数のindex.htmlを作ってもい...
-
ホームページでファイルをダウ...
-
<!DOCTYPE html>あってますか?...
-
<!DOCTYPE html>あってますか?...
-
HTMLからフォルダを開きたい
-
form action="#"
-
iPadの標準ブラウザでローカルH...
-
<!DOCTYPE html>あってますか?↑
-
java_run.batがダウンロードで...
-
Excelで、社外秘(閲覧のみ)と...
-
セイヨウタンポポとカントウタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つ下の階層のフォルダに相対...
-
複数のindex.htmlを作ってもい...
-
htaccessを利用してurl正規化
-
リンク先に日本語フォルダがあ...
-
URLに「.html」の拡張子がなく...
-
.htmと.htmlの違い
-
フォルダ内の最初のファイル名...
-
XREA使用で作成したHTMLファイ...
-
サーバー内のフォルダにある写...
-
トップページ「/index.html」の...
-
フォルダにはダミーでもindex.h...
-
htmlでリンクに勝手にindex.htm...
-
URLの書き方
-
リンクのindex.html省略
-
index.htmlファイルはどこに?
-
Application.OnTimeで引数付き...
-
ホームを index.html から inde...
-
JSPと異なるディレクトリのファ...
-
HTMLの階層移動
-
Matlabでforやifを使わずに条件...
おすすめ情報