BlogEngine.NET 1.4.5.7 は、なぜか Web.Config で CustomErrors Mode="Off" なため、
デフォルトで用意されているエラーハンドリング用ページが使われていません
そこで Web.Config を書き変えてカスタムエラーを有効にし、
さらに .Text からの移行で起きている /archive/ 配下のエラーをハンドルするため、
コードを少し書き変えました。
書き変えたのは error404.aspx.cs で、
PageLoad() メソッドの最初で "/post/" を調べているところを、OR条件で "/archive" も調べるようにして、
これにヒットしたらダイレクトにサーチをかけて、該当トピックの候補が表示されるようにしました。
// 元のメソッド
if (Request.QueryString["aspxerrorpath"] != null && Request.QueryString["aspxerrorpath"].Contains("/post/"))
// 書き変えたメソッド
if (Request.QueryString["aspxerrorpath"] != null && (Request.QueryString["aspxerrorpath"].Contains("/post/") || Request.QueryString["aspxerrorpath"].Contains("/archive/")))