不足しているページのすべてのURLを404error.aspx
としてルートにある404ページに転送したい
これまでのところ、.aspx
を含むURLのみが機能します。たとえば、4error.aspx
と入力すると、エラーページにリダイレクトされます。
/404error.aspx?aspxerrorpath=/4error.aspx
私は.NET開発者ではないため、クラシック.aspx
を使用するこのプロジェクトを引き継ぎました。そのため、テンプレートやフレームワークでこれを構築するためにMicrosoft製品を使用していません。私は崇高なテキストでコーディングしています。
Googleで見つけた記事をたくさん見ましたが、実際に機能する完全な例はありませんでした。
これはweb.config
で始めたコード全体です
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
私はまた、Microsoftからこの例を見つけました(404error.aspxが私の変更でした)
http://msdn.Microsoft.com/en-us/library/vstudio/bb397417%28v=vs.100%29.aspx
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" />
<!-- Turn on Custom Errors -->
<customErrors mode="On"
defaultRedirect="/404error.aspx">
<error statusCode="404" redirect="/404Error.aspx"/>
</customErrors>
</system.web>
</configuration>
.aspx
がないページも処理されませんでした
それから私はこの例を試しました
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
<error statusCode="404" redirect="~/404error.aspx" />
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<!-- full url when responsemode is Redirect -->
<error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
<!-- local relative path when responsemode is ExecuteURL -->
<error statusCode="403" path="~/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="404" path="~/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="~/404error.aspx" responseMode="ExecuteURL" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
明らかに、404以外のページのパスを変更する必要がありますが、それらのエラーをテストしたいだけです。最後のweb.config
はさらに悪い結果をもたらします。
何を変更する必要があるか教えてください。 <configuration>
がいっぱいになるとどうなるか混乱してしまいます。
多くの開発者がHTMLページにすることを提案していることを読んだことがあります。だから今私のページは404.html
ですここに私の更新されたweb.config
があります
<configuration>
<system.web>
<customErrors mode="On"
redirectMode="ResponseRewrite">
<error statusCode="404"
redirect="~/404.html"/>
</customErrors>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom"
defaultResponseMode="File">
<remove statusCode="404"/>
<error statusCode="404"
path="~/404.html"/>
</httpErrors>
</system.webServer>
</configuration>
<httpErrors>
要素を構成する必要があります。これにより、静的ファイルとサーバーページの両方のエラーページが構成されます。
3回目の試行 "web.config(3)"と "編集1"はほぼがあります。問題は、ここではアプリ相対パス(例: "〜/ 404.html")を使用できないことです。これらは、サイトルート(例: "/404.html")からの相対パスでなければなりません。
<?xml version="1.0"?>
<configuration>
<system.webServer>
<httpErrors>
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<!-- full url when responsemode is Redirect -->
<error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
<!-- local relative path when responsemode is ExecuteURL -->
<error statusCode="403" path="/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="404" path="/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="/404error.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>