web-dev-qa-db-ja.com

コードでリダイレクトするカスタム404ページと301リダイレクトを使用する理由は?

WebサイトをJoomlaからMuraに移動しており、一部のページは異なるURLに配置される予定です。

古いURLを新しい場所にリダイレクトするために、web.configファイルのルールセクションで301リダイレクトを設定できます。

ただし、上司は、要求されたURLを判別して新しいURLにリダイレクトするカスタム404ページを作成することを望んでいます。両方の情報は、カスタム404ページが正しいリダイレクトを行うために使用するデータベースに保存されます。

それはすることの間の質問です

<rule name="rulename">
      <match url="OLD_URL" />
      <action type="Redirect" redirectType="Permanent" url="NEW_URL" />
</rule>

web.configファイルで、または、

<cfset path = cgi.path_info>
<cfif path eq "OLD_URL">
<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="NEW_URL">
<cfabort>

Coldfusionテンプレートのカスタム404ページのヘッダー内。確認したところ、Coldfusionリダイレクトは301ステータスコードを返します。

私には、web.configファイルの301リダイレクトがより良い方法のように思えますが、ここに欠けているものがありますか?

4
user95472

私はここに欠けているものがありますか?

あると思います。

カスタム404ページを使用してURLを確認し、リダイレクトを指定すると、301リダイレクトがクライアントに返されます。サーバー設定でリダイレクトを直接作成する場合と同じです。クライアントは、リダイレクトが発生したときに404を表示しません。リダイレクトが発生しない場合(つまり、URLがデータベースルックアップにない場合)にのみ、カスタム404ページfallbackがデフォルトの404応答を返します。

これは良いアイデアです...リダイレクトロジックを処理する代わりにearlyevery request-正当なページリクエストのパフォーマンスに潜在的に影響を与える可能性がありますカスタムリダイレクト)-代わりに、リクエストでリダイレクトロジックlateを処理します。ページが存在しないと既に判断している場合。このように、リダイレクトロジックは通常のサイトの使用に影響を与えません。

少数のリダイレクトしかない場合、どちらの方法でもパフォーマンスに違いはありません。両方の状況で301リダイレクトが引き続き発生します。 (データベースでリダイレクトを管理しますmight保守が容易になります。)ただし、100、1000、10000のリダイレクト(サイトの移行による)があれば、「カスタム404」を使用するのが本当に唯一の方法。

「カスタム404」は、おそらく少し誤解を招く可能性があります(アプリケーション/ CMSによっては、実装方法が異なる場合があります)...実際に実行しているのは、URLが現在のサイトに存在します。

3
MrWhite