プロが教える店舗&オフィスのセキュリティ対策術

プロバイダの有料サービスでサイトをつくり、指定されたcgi置き場にファイルを設置したことはあるのですが、
今回はじめてサーバーを借りてサイトをつくっています。

http://○○/index.html をブラウザにて確認できる(表示される)のに、
http://○○ でトップページにアクセスすると「404」のエラーページになってしまいます。

よくみると、404ページの上に表示されたURLが、http://○○/index.cgi となっていました。

アクセスするときはホームーページのURLでアクセスしたのに、
なぜかindex.cgiが表示され、しかもそのファイルがない、ということのようなのです。

原因がわかりません。

ルートディレクトリにインデックスhtmlページはあります。
なのに、なぜ表示されないのでしょうか。
ひとつ下の階層フォルダにcgiのファイルが入っていますが、なにか配置の仕方をまちがっているのでしょうか?
パーミッションはいちおう借りたところのマニュアル通りにしていますが、こちらをまちがっている可能性はありますか?

よろしくお願いいたします。

A 回答 (1件)

.htaccess により、ファイル名を指定しなかったときに、自動的に補完するファイル名を指定できます。



.htaccessに、次のような行は無いでしょうか。

>DirectoryIndex index.cgi index.html index.shtml

この指定があると、「http://○○/」というアクセスがあったときに、

(1)http://○○/index.cgi
(2)http://○○/index.html
(3)http://○○/index.shtml

というファイルに順番にアクセスし、存在した物が表示されます。

もしここで、

>DirectoryIndex index.cgi

とだけしか書かれていなかったなら、

(1)http://○○/index.cgi

だけしか試さず、index.html があっても表示されません。

もう一つ、Rewritecond と Rewriterule によるURL書き換えが行われている、と言う場合も考えられます。

例えば、

>RewriteEngine On
>RewriteCond %{REQUEST_URI} /$
>RewriteRule ^(.*)$ $1index.cgi [R,L]

等と書かれていたら、「/ で終わるURLは、/index.cgiに書き換える」という意味になりますので、index.htmlに行かずにindex.cgiが表示されてしまったりします。

その他にも、.htaccess による仕掛けがいくつか考えられますが…。
.htaccessに書いてあることがよく分からなければ、.htaccess を削除してしまうのも一つの手段です。
.htaccess が存在しなければ、そのWebサーバの既定値で動きますので、http://○○/ は http://○○/index.html が普通に表示されるのではないかと思いますけど…。

この回答への補足

くわしい回答をありがとうございます!


質問内容に誤りがありました。すみません、勘違いしていました。

以前cgiを使った経験がありまして、今回は最初cgiのファイルをアップしましたがすぐに削除して、phpのファイルをアップロードしました。

で、.htaccessファイルはありません。


今のところ下記のようになっているのですが、変ですか。

+imag
+mail
index.html
style.css
welcome.html

mailというフォルダの中に、メールフォームのphpファイルが入っています。
ここにもindex.htmlがあり(フォルダごとに必要だとどこかで読んだので)、
そのファイル内にphpを参照(実行?)する記述が入っているのだと思うのですが……。

phpファイル内にRewritecond と Rewriterule はありませんでした。


ちなみにmailフォルダ内のindex.htmlをブラウザで確認してそのメールフォームを使用すると、
正常に送信完了画面になり、メールソフトに返信メールも送られてきます。


サーバー側ではデフォルトで
index.html index.htm index.shtml index.shtm index.php index.cgi
の順でアクセスされるそうです。

なにゆえホームページのURLにアクセスするとindex.cgiとURLが変わって、しかも404になるのかがわからないのです。

補足日時:2013/06/28 14:42
    • good
    • 0
この回答へのお礼

自己解決しました。
回答、ありがとうございました。

なんとキャッシュを削除したら、ふつうに表示されました……。

ブラウザは通常、firefoxを使っているのですが、昨日IEでアクセスしてみたとろ、
きちんと表示されましたので、あらと思いまして。

階層とかファイルの中身とかに問題はなかったようです。

ともかくありがとうございました。

お礼日時:2013/06/29 06:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!