2008-09-15 28 views
39

ウェブサイト上の壊れたリンクを見つけるためにどのような手法やツールをお勧めしますか?ウェブサイト上の壊れたリンクを見つける方法

私はログファイルにアクセスしているため、404エラーを解析すると考えられますが、サイト上のすべてのリンクに従う(または追跡しようとする)自動化が欲しいと思います。

+1

仕事もかなりうまくいく[HTTrack](http://www.httrack.com/)もあります。 –

+0

フラグメント識別子が有効であるかどうかを考慮して、デッドリンクを探したい場合は、https://github.com/gajus/deadlinkを参照してください。 – Gajus

+0

@DaviddCeFreitas:デッドリンクを見つけるためにhttrackをどのくらい正確に使うことができるかを知るために、答えをつくるのに気をつけますか? –

答えて

35

Firefox用LinkCheckerを参照してください。

Mac OSの場合、壊れたリンクのURLを確認できるツールIntegrityがあります。

Windowsの場合はXenu's Link Sleuthです。

+3

XenuのLink Sleuthはちょうどチケットのようです。 –

+0

完全性が素晴らしいです!共有してくれてありがとう。 –

+0

私はhttp://checkerr.orgの後ろにいます – zupa

0

ベストな方法は、サイト全体を実行する小さなボットを作成し、その結果を記録することです。私は展開の前に私のサイトをテストするためにこれを行い、それは本当にうまく動作します。

+1

私は自分のサイトで自分で試すことができる小さなボットやアルゴリズムを教えてください。事前に感謝 – gmhk

+0

...いくつかの参照は少なくとも歓迎するだろう。 Botは多くの鐘を鳴らしません。このポストがアクセス可能になった場合、私はダウンボートを直ちに削除します-1、今やブーストオフを嗅ぐ。 – hhh

+0

これには数週間の作業が必要です。 ConroyPの答えに対する私のコメントを見てください。 – NickG

2

いずれかのログファイルを解析し、あなたの「リンク切れ」レポート(例えばAnalogやGoogle Webmaster Tools)を与えるツールを使用するか、あなたのウェブサイトやレポート壊れたリンク(例えばW3C Link Checkerを)スパイダーツールを実行します。

10

私はW3C Link Checkerが好きです。

+1

私も。 'Check linked documents in recursively'をチェックし、' recursion depth'フィールドを空のままにすると、指定されたドメインで無限に繰り返されるようです。 – mb21

7

linkcheckerツールを参照してください:

LinkCheckerは無料で、GPLは、ウェブサイトのバリデータのライセンスを取得しました。 LinkCheckerは、Webドキュメントまたは完全なWebサイトのリンクをチェックします。あなたのサイトが注目の一定のレベルを得た後

// Pseudo-code to recursively check for broken links 
// logging all errors centrally 
function check_links($page) 
{ 
    $html = fetch_page($page); 
    if(!$html) 
    { 
     // Log page to failures log 
     ... 
    } 
    else 
    { 
     // Find all html, img, etc links on page 
     $links = find_links_on_page($html); 
     foreach($links as $link) 
     { 
      check_links($link); 
     } 
    } 
} 

+0

これはローカルで実行され、リンク元とリンク先の両方が壊れていることを示しています。 –

+0

本当にいいツールです。 GUI、CLIバージョン、Webバージョンがあります。 – Geert

0

あなたの最善の策は、お好みのスクリプト言語で一緒にあなた自身のクモをノックすることで、それはの線に沿って再帰的に行うことができますGoogleからのwebmaster toolsは、ユーザーが遭遇する可能性のある壊れたリンクを表示する上で非常に貴重ですが、これはかなり反動的です - Googleがインデックスを作成してウェブマスターパネルに404を記録するまで数週間かかる可能性があります。

上記のような独自のスクリプトを書くと、Google(ウェブマスターツール)やユーザー(アクセスログ404)が偶然に遭遇するのを待つことなく、すべての壊れたリンクが表示されます。

+1

私はもはやそのような知的挑戦のための時間がない(それは聞こえるが、楽しい)、誰かがこのようなクモを書いているかもしれないことをちょっと期待していた!:-) –

+0

誰かが便利な擬似コード - > PHP/Perlコンバータを書いたことがあれば、私たちはビジネスになります! – ConroyP

+0

+1情報常に良いこと、詳細:P – hhh

-1

CheckWebというWindowsアプリケーションがあります。それはもはや開発されていませんが、うまく動作し、コードはオープンです(C++と思います)。

などすべてのエラーを報告し、画像/ページ「体重」では、

http://www.algonet.se/~hubbabub/how-to/checkweben.html

1

をあなたはそれにURLを与え、そして(あなたが選択した場合、外部リンク)それはあなたのサイトをクロールします。 NETアプリケーションでは、ASP.NETにすべての要求を渡すようにIISを設定し、グローバルエラーハンドラで404エラーを捕捉してログに記録することができます。これは、あなたの内部リンクがないかどうかを確認するためにサイトをスパイダーすることに加えて、あなたがやることです。これを行うと、他のサイトからの壊れたリンクを見つけることができ、正しいページに301のリダイレクトを付けて修正することができます。

サイトを内部的にテストするために、Microsoft SEOツールキットもあります。

もちろん、最適な手法はコンパイル時にこの問題を避けることです! ASP.NETでは、各ページの静的メソッドからすべてのリンクを生成するように要求することで、これに近づくことができます。そのため、指定されたURLが生成される場所は1つだけです。例えばhttp://www.codeproject.com/KB/aspnet/StronglyTypedPages.aspx

あなたは完全なC#のクローラーをしたい場合は、1がここにあります: - http://blog.abodit.com/2010/03/a-simple-web-crawler-in-c-using-htmlagilitypack/

0

LinkTigerはこれを行うには(非自由が)非常に洗練サービスのように思えます。私はそれを使用していない、ちょうどそれがまだ言及されていないので、追加したい。

1

市販の製品DeepTrawlはこれを実行し、Windows/Macの両方で使用できます。

開示:私はDeepTrawlの主導的な開発者です。

20

あなたが求めていることをするwgetスクリプトが見つかりました。

wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com 

このクレジットはです。

+2

Windows版** wget **の32ビット版はSourceForge [here](http://gnuwin32.sourceforge.net/packages/wget.htm)にあります。 *(Windows用の他のGNUバイナリのリンクはこちら[http://gnuwin32.sourceforge.net/packages.html])*。 ** man page ** ** wget **は[here](https://www.gnu.org/software/wget/manual/wget.html)にあります。 – DavidRR

+1

この方法の問題は、ログの解釈が最も簡単ではないことです。あなたは '404'と'壊れたリンク 'についてgrepすることができますが、リンクがどこにあるかは明らかです。 – Flimm