多くの異なる非マイクロソフトテクノロジを使用して書かれた古いWebサイトを書き直しています。新しいサイトはasp.net Webフォームです。URLが有効でない場合、404エラーを投げる前に従来のURLルックアップを実行してください
データベースにOLD urlのリストがあり、データベース内のそのURLのリストに対して要求されたページURLを検査し、NEW URLの内容に適切な301リダイレクトを実行するルーチンがあります。
効率的な観点からは、要求されたURLが本質的に404 /見つからない場合のみ、このOLD URLルックアップを実行する方法はありますか。私は大部分の時間として、(Global.asaxのApplication_BeginRequestを介して)すべての単一ページリクエストで自分の「Check-Old-Urls-And-Found-If-Found」ルーチンを起動したくありません。有効な新しい.netページで、301リダイレクトは必要ありません。したがって、本質的に404エラーを投げようとしている場合にのみ私のルーチンを起動することができるようにしたいと思います。
Dbの古いサイトのURLを確認するルーチンがキャッシュされているので、少なくとも毎回データベースに当てはまるわけではありませんが、このルーチンを呼び出すことは避けたいと思います。キャッシュが期限切れになっています)。
私はおそらく、global.asax内のApplication_Errorルーチンの内部から古いurl検索を実行し、404ステータスのエラーコードをチェックし、そのシナリオで古いURL検索を行うことができると考えていましたが、テストすると、 global.asaxのApplication_Errorルーチンでブレークポイントに当たっているように見えます。代わりにブラウザにIIS 7 404 Not Foundエラーが表示されています。
ブラウザは新しいURLに301の応答を受け取り、(要求されたURLが新旧の風味のURLでない限り)不正な404応答コードを取得しないようにする必要があります。
誰もこの状況を効率的に処理する方法をお勧めしますか?
カスタム404ページを作成し、必要に応じてそこからリダイレクトします。 –
IISがこれに対処できない理由はありますか?それからあなたのサイトにヒットする前に、古いリンクに301リダイレクトが発行されます。 –
古いURLには一貫したパターンはありません。それらは絶対に混乱していますので、IISにどのような種類のURL /パターンを調べるかはわかりません。 – marcusstarnes