PHPで楽して404チェック

ページ情報
制作日
2003-12-20
最終更新日
2003-12-20
参照用URI
http://www.arielworks.net/articles/2003/1220d
分野

楽して404チェック最終編

サイトを制作してからある程度時間が経つとリンク先のサイトの移転などでリンクが機能しなくなってきます。1つ1つ確認するのは面倒なので、スクリプトでサイト全体のリンクを確認してみようと思います。

最終編ということで、いよいよリストされたURIを総チェックします。

これまでのスクリプトを合わせて使う。

今回のスクリプトは今まで制作したget_http_header()get_uri_list()get_uri_list_all()のフロントエンド的存在になります。

get_uri_list_all()で得たサイト全体のURIリストをget_http_header()で分析します。ただ、問題なのはget_uri_list_all()get_uri_list()を呼び出した時点ですでにget_http_header()が実行されているので、2度get_http_header()を実行していることになってしまいます。get_uri_list_all()は速度的にも構造的にも問題があるので、ディレクトリツリー制作スクリプトを使用してURIのリストを求めた方が良いかもしれません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="ja">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>リンク状況</title>

</head><body>

<table border="1">
<tr><th>URI</th><th>Status-Code</th><th>Reason-Pharase</th></tr>

<?php

$target = $_GET['target'];
$list = array();
$list = get_url_list_all( $target );

foreach( $list as $uri ) {
    $stat = get_http_header( $uri );
    print '<tr><td>' . "$uri" . '</td><td>';
    if( $stat['Status-Code'] == 200 ) {
        print $stat['Status-Code'] . '</td><td>' . $stat['Reason-Phrase'];
    } else {
        print '<em>' . $stat['Status-Code'] . '</em>'
        . '</td><td>' .  '<em>' . $stat['Reason-Phrase'] . '</em>';
    }
    print "</td></tr>\n";
}

?>
</table>

</body></html>

3つの関数が呼び出せるように他のスクリプトをインクルードしておく必要があります。

出力結果

実行すると以下のような感じになります。

URI Status-Code Reason-Pharase
http://www.arielworks.net/about/ 200 OK
http://www.arielworks.net/template/default.css 200 OK
http://www.arielworks.net/ 200 OK
http://www.arielworks.net/works/ 200 OK
http://www.arielworks.net/links/ 200 OK
http://www.arielworks.net/fb2k/ 200 OK
http://www.arielworks.net/works/ufo/ 200 OK
http://www.arielworks.net/works/mkv/ 200 OK
http://www.arielworks.net/works/mkv/mkv_logos.rar 200 OK
http://www.arielworks.net/works/mkv/mkv_ring_bottom_s.png 200 OK
http://www.arielworks.net/works/mkv/mkv_ring_middle_s.png 200 OK
http://www.arielworks.net/works/mkv/mkv_dvd_s.png 200 OK
http://www.arielworks.net/works/mkv/mkv_panda_s.png 200 OK
http://www.arielworks.net/works/mkv/mkv_pandas_s.png 200 OK
http://www.arielworks.net/works/mkv/mkv_metal_s.png 200 OK

実用的にはこれだけだとどのページにどのURIへのリンクが有るのか分からないので、もう少し手を加える必要があります。

連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL