2009-06-08 5 views
0

web.configファイルの<customErrors>セクションを設定し、IISマネージャーの404エラーのカスタムエラーページを設定することによって、 "404ページが見つかりません"を処理するASP.NETページがあります。ASP.NETページのハイパーリンクとコンテンツをどのようにリベースしますか?

私のウェブサイトのルートにあるページでは正常に動作しますが、サイトのサブディレクトリでは機能しません。カスタムエラーページのハイパーリンクやコンテンツに間違ったURLがあります。

エラーページのすべてのリンクは、サーバー側のコントロール(runat = "server")であり、リンクは "〜/"に基づいています。

私はhttp://mysite/nosuchfolder/nosuchfileでサイトを閲覧するとページが、それはむしろnosuchfolderから、ルートから提供されていますし、ブラウザがnosuchfolderからリンクを基づかれるなどとして、すべてのリンクをブラウザで壊れている思考のリンクをレンダリングします。

別のフォルダ/ファイル名のリンクを元に戻すためにASP.NETページを「伝える」方法はありますか?

注:

  • ページテンプレートの大部分は、マスターページからレンダリングされる
  • 私はIIS6を実行していることだし、URLにカスタムエラー404を設定している:私のweb.configファイルで/error404.aspx
  • ファイル私は、ページ内のHTML <base>タグを使用しています回避策として/error404.aspx
  • にリダイレクトする<customErrors>セクションを設定しているが、私はこの
  • を避けたいです
  • 私はすべての私の「〜/」ベースのリンクを「/」に変更する必要がありますする必要はありませんかインライン基づかそれがリダイレクトまたはURLを使用しているあなたはUO夜の、カスタマーのエラーページを設定

答えて

0

スコット区の記事(いわば!) - 先端ジェームズに感謝。

答えがここContext.RewritePath(newPath)

を使用することですが、私は私のカスタム404ページに使うコードです -

protected override void Render(HtmlTextWriter writer) 
{ 
    string rebase = Server.UrlDecode(Request.ServerVariables["QUERY_STRING"]); 

    if (rebase.Length>10 && rebase.StartsWith("404;")) 
    { 
     try 
     { 
      rebase = new Uri(rebase.Substring(4)).AbsolutePath; 
     } 
     catch 
     { 
      rebase = "/"; 
     } 
     finally 
     { 
      Context.RewritePath(rebase); 
     } 
    } 

    base.Render(writer); 
    Response.StatusCode = 404; 
} 

同じように欠落している.aspxページを処理するには、web.configの設定がありますあなたはResponseRewrite

<customErrors mode="On" redirectMode="ResponseRewrite"> 
    <error statusCode="404" redirect="~/error404.aspx" /> 
</customErrors> 

に設定しているredirectModeと呼ばれるこれは、リダイレクトのデフォルトの動作を停止しますユーザーには~/error404.aspx?aspxerrorpath=badfile

注:この設定は、最新のASP.NETサービスパック(たとえば、フレームワーク3。5 SP1)

MSDN Reference for redirectMode

0

、ハック書き直す?あなたが記述する問題は、ASP.NETでURL書き換えを実装する際の一般的な問題です。基本的には、URLの再書き込みでは、URLを解析するときにどのURLを使用するかがプロセッサに不明瞭になります。問題に対処する方法の記事/投稿が書かれている場合は、番号。正しい道に私を置く書き換えURLの

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

http://searchengineland.com/url-rewriting-custom-error-pages-in-aspnet-20-12234

+0

おかげでジェームズ、私は書き換え任意のURLを使用していないよ - IISで、私のweb.configファイル内だけでリダイレクトを。私はこれらのページを読んでいくつもりです – Alex

関連する問題