私は誰かがURLでApplication.cfcを与えるかもしれないシナリオを考えています。これはColdFusionエンジンによって予約されているため機能せず、ユーザーにはエラーが表示されます。
そのようなシナリオでユーザーをリダイレクトすることは可能ですか?
私は誰かがURLでApplication.cfcを与えるかもしれないシナリオを考えています。これはColdFusionエンジンによって予約されているため機能せず、ユーザーにはエラーが表示されます。
そのようなシナリオでユーザーをリダイレクトすることは可能ですか?
サイト全体のエラーハンドラーで正常にキャッチしました。それはあなたにとって実行可能な解決策ですか?
小さな更新、これを理解しました:
<cftry>
<cfif error.Message EQ "Invalid request of Application.cfm, Application.cfc, or OnRequestEnd.cfm file.">
<cflocation url="#getContextRoot()#/#getDirectoryFromPath(error.Template)#">
</cfif>
<cfcatch>that didn't work</cfcatch>
</cftry>
CFは、エラーを取得できる位置で、application.cfc、application.cfm、およびonrequestend.cfmへの呼び出しをインターセプトすると思います。
コールドフュージョン開発サイトの1つでテストを行い、application.cfcを定義済みのIIS Webサイトのホームフォルダーの前に親フォルダーに移動して、ファイルを呼び出そうとしました。ファイルが見つからない場合は404エラーが返されました。coldfusionはルートフォルダーまで検索してファイルを見つけるため、IISアクセス可能なフォルダーにない場合でも、application.cfcファイルを検索します。IISは、直接リクエストに対して404エラーを返します。
あなたの404エラーを処理することはおそらく解決策です。
これは、Windows以外のサーバー環境でも解決策になると思います。
ええと:あなたはあなたのウェブサイトで捕らえられなかったエラーを処理するのと同じ方法でこの種のエラーを処理するべきです:それをonError()
ハンドラー/<cferror>
コード/サイト全体のエラーテンプレートに任せてください。Application.cfcを使用しているため、ここではonError()が最適なアプローチです。
この種のエラーは特別な処理を必要としませんが、どのタイプの未処理のエラーも適切に処理する必要があります。あなたがこれをしていないのなら(あなたはそうではないように聞こえます)、あなたはそうすべきです。