質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

5925閲覧

Window IISで、404エラー発生時に特定ページに遷移させる方法

deranail

総合スコア14

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/10/28 05:30

編集2020/10/28 06:04

作成したWebサイトにて、
URLの打ち間違い等により、404エラーが発生した際に
特定ページに遷移させる方法を探しています。

例)
・・・/index.aspx(存在するページ) を入力された→ページ表示
・・・/indexxx.aspx(存在しないページ)を入力された→error.aspxに遷移

自身で調べたところ、Web.configファイルに
<system.web>
<customErrors mode="Off">
<error redirect="error.aspx" statusCode="404" />
</customErrors>
</system.web>
を追加すると良いと書いてありましたが、うまく行きませんでした。

方法をご存知の方がいらっしゃいましたらご教授お願いいたします。

動作環境
・VisualStuido:2015
・.Net FrameWork:4.0
・IIS:10.0
・Windows:10
・Webサイトの種類:WebForms

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/28 05:40 編集

> statusCode="405" 404 ではないのですか? ASP.NET の話であれば ASP.NET のタグをつけてください。その際、アプリは何か(Web Forms? MVC? その他?)の情報も追記願います。
退会済みユーザー

退会済みユーザー

2020/10/28 05:42

Microsoft のドキュメントによると "カスタム エラーは、ASP.NET によって処理された要素に対してだけ発行されます" とのことです。対象とするのは「ASP.NET によって処理された要素」だけで静的ファイルは対象外で良いのですか?
deranail

2020/10/28 06:07

すいません、405ではなく404です。書き間違えました。 そして、「今回はAPS.NETにて処理された要素」ではないので、 対応はcustomErrorsに書いても効果がない気がしてきました。
退会済みユーザー

退会済みユーザー

2020/10/28 06:33

ASP.NET によって処理された要素というのは、例えば拡張子が .aspx となっているページで、そうでない静的ファイルというのは例えば拡張子が .html となっているファイルですが、そこは理解されているでしょうか? そして、「ASP.NET によって処理された要素」だけでよければ、<customErrors mode="Off"> の mode を On にすれば redirect="error.aspx" に設定した error.aspx が表示されるのですが。
deranail

2020/10/28 06:54

ASP.NET によって処理された要素 →理解出来ました。 .aspx→対象 .html→対象外 という事ですね。 そして本題なのですが、<customErrors mode="Off">をOnにすれば解決しました。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/10/28 07:03

解決したようですのでこのスレッドはクローズしてください。
guest

回答1

0

ベストアンサー

コメント欄に書きましたが、Microsoft のドキュメントによると "カスタム エラーは、ASP.NET によって処理された要素に対してだけ発行されます" とのことです。ASP.NET によって処理された要素というのは、例えば拡張子が .aspx となっているページです。

なので、質問以下いてあった例、

・・・/index.aspx(存在するページ) を入力された→ページ表示
・・・/indexxx.aspx(存在しないページ)を入力された→error.aspxに遷移

については、質問の設定の、

<system.web> <customErrors mode="Off"> <error redirect="error.aspx" statusCode="404" /> </customErrors> </system.web>

で、<customErrors mode="Off"> の mode を On に変更すれば redirect="error.aspx" に設定した error.aspx が表示されます。

読んで字のごとく「カスタムエラー」なので、カスタムエラーページに設定した error.aspx を表示するには mode="Off" ではダメなのです。ちなみにデフォルトは RemoteOnly ですが、その場合はリモートアクセスならカスタムエラーページは表示されます。

「ASP.NET によって処理された要素」でない静的ファイルというのは、例えば拡張子が .html となっているファイルですが、その場合は customErrors の設定は働かず、IIS により以下のような IIS の標準エラーページが表示されます。

イメージ説明

これも対応したいということであれば、IIS の URL Rewrite Module を使うと可能かもしれません。

投稿2020/10/28 06:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

deranail

2020/10/28 07:41

回答ありがとうございます。 解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問