Home > べたろぐ。 > Web > 404 not found – error.cgi

404 not found – error.cgi

とりあえずエラーページを用意してみました。いわゆる 404 Not Found とかいうアレです。

なぜって?ディレクトリ内の丸見えを防ぎたかったんです

使っているサーバはさくらインターネットのレンタルサーバ スタンダードプランで、さくらは .htaccess で設定をいぢることはできるんですが、Options が使えない。なのでインデックスファイルが存在しないディレクトリを開いた時に中身が丸見えになるのを防ぐには、Options を使わずに違うアプローチが必要になる。公式サポートのひみつのフォルダにあるファイルの一覧を見られないようにしたいというページでは DirectoryIndex を使ってインデックスファイルの設定の最後にエラーページを指定して、インデックスファイルが存在しない場合はエラーページに飛ばす方法が書かれていました。まあ、この方法を使うことにしたわけですが、ただエラーページを用意しただけじゃつまらないので色々と細工をしてみました。

めんどくさいことは Perl に投げちゃお

細工と言っても単純で、エラーコード 404 だけでなく 403500 にも対応できるように、エラーページを Perl スクリプトにして動的に出力してやることにしました。

ステータスコードは検索ロボットたちに優しいんです

Perl スクリプトにすることでステータスコードをきちんと返すことができるようになる。きちんとステータスコードを出力することによって、エラーを、人にだけでなく Google や Yahoo などの検索ロボットにも伝えることができるので、結果的に検索から訪れる人に対してのエラーを減らすことができる。

真っすぐな視線には弱いんです

なお、当初の目的である、インデックスファイルがない時に error.cgi へ飛ばした場合ですが、error.cgi へ直接アクセスされることになります。なので、直接 error.cgi へアクセスがあった時はエラー 404 を返し、ファイルは存在しませんよと偽装することにしました。

error.cgi の大まかなサンプルコード
my $error_code = $ENV{REDIRECT_STATUS};

# エラー 500 (Internal server error) の場合
if ( $error_code eq "500" ){

# エラー 404 (File not found) の場合
} elsif ( $error_code eq "404" ){

# エラー 403 (Permission denied) の場合
} elsif ( $error_code eq "403" ){

# error.cgi への直接リンクの場合
} else {
    # 404 を偽装しステータスコードも 404 を返す
    print "Status: 404 Not Found\n";

}
.htaccess の中の関連する項目
#-----------------------------------------------
# インデックスファイル

DirectoryIndex index.cgi index.php index.xhtml index.shtml index.html /error/error.cgi

#--------------------------------------------------
# エラー400 (Bad Syntax) リクエストの方法が違います
# エラー401 (Authorization Required) 認証に失敗しました
# エラー403 (Permission denied) アクセス権限がありません
# エラー404 (File not found) 該当するページが見つかりません
# エラー500 (Internal server error) 内部サーバーエラー(主にCGIなどの誤り)

#ErrorDocument 400 /error/400.php
#ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/error.cgi
ErrorDocument 404 /error/error.cgi
ErrorDocument 500 /error/error.cgi
error.cgi の実行結果例

エラーページ作成にあたって 68user’s page 内の error.cgi を参考にしました。

関連するかもしれない記事

Comments:2

Tamela 18-07-30 (月) 9:55

Word of mouth is vital in online so take good care of your prospective customers
and provide them quality content. There may be a lot of SEO guides and blogs
on the net that tackle top in the line strategies to achieve high Google rankings, but I’m
sure that you may still find many website owners on the market who are scrambling their way
to get high Google rankings. One in the most common mistakes we
got were title tags incorrectly written.

BestAlan 18-08-15 (水) 6:52

I have noticed you don’t monetize your page, don’t waste
your traffic, you can earn extra cash every month. You can use the
best adsense alternative for any type of website (they approve all websites), for more details simply search in gooogle:
boorfe’s tips monetize your website

Comment Form
Remember personal info

Trackbacks:7

Trackback URL for this entry
http://szdy.info/wp/2009/04/20/6/trackback/
Listed below are links to weblogs that reference
404 not found – error.cgi from べたろぐ。
trackback from Capillus 14-10-11 (土) 9:19

Capillus

404 not found – error.cgi – べたろぐ。

trackback from plastic surgery on nose 14-10-11 (土) 15:18

plastic surgery on nose

404 not found – error.cgi – べたろぐ。

trackback from Boca Raton entry level CPA jobs 14-10-14 (火) 13:07

Boca Raton entry level CPA jobs

404 not found – error.cgi – べたろぐ。

trackback from rhinoplasty cast removal what to expect 14-11-05 (水) 9:56

rhinoplasty cast removal what to expect

404 not found – error.cgi – べたろぐ。

trackback from laser hair growth machines for sale 14-11-10 (月) 19:42

laser hair growth machines for sale

404 not found – error.cgi – べたろぐ。

trackback from discover this 14-11-16 (日) 10:45

discover this

404 not found – error.cgi – べたろぐ。

trackback from social media marketing music 14-11-16 (日) 13:31

social media marketing music

404 not found – error.cgi – べたろぐ。

Home > べたろぐ。 > Web > 404 not found – error.cgi

最近のコメント
Search
Feeds
Meta

Return to page top