301は404ページにリダイレクトするか、ステータスコードを404に設定してページに留まりますか?


9

クエリ文字列の値が見つかり、正しく設定されている場合、管理者だけがアクセスできるこれらのページにアクセスできるページがWebサイトにいくつかあります。例えば:

http://www.mydomain.com/show-daily-statistics?key=abc


上記のリンクはページのコンテンツを表示しますが、以下のような他のものは表示しません:

http://www.mydomain.com/show-daily-statistics


今、私は検索エンジンや管理者以外のユーザーがこれらの隠されたページに何らかの理由で到達した場合の対処方法を考えていました。

もちろん、ページのステータスコードを404に変更することも、301にリダイレクトすることもできます。

http://www.mydomain.com/404-error


GoogleとSEOに関する最善の解決策は何ですか?


6
非表示にしようとしている情報になんらかの重要性がある場合は、実際の認証を実装することを検討します。それとは別に、301リダイレクトは意味的にコンテンツが移動したことを示しますが、ここではそうではないため、不適切な応答です。
あなた

回答:


11

正しいコードは401 Not Authorizedです

HTTP仕様に従って

10.4.2 401無許可

リクエストにはユーザー認証が必要です。応答には、要求されたリソースに適用可能なチャレンジを含むWWW-Authenticateヘッダーフィールド(セクション14.47)を含める必要があります。クライアントは、適切なAuthorizationヘッダーフィールド(セクション14.8)を使用して要求を繰り返すことができます(MAY)。要求にすでに認証資格情報が含まれている場合、401応答は、それらの資格情報の認証が拒否されたことを示します。401応答に前の応答と同じチャレンジが含まれており、ユーザーエージェントが少なくとも1回は認証をすでに試みている場合、エンティティには関連する診断情報が含まれている可能性があるため、ユーザーに応答で指定されたエンティティを提示する必要があります。HTTPアクセス認証については、「HTTP認証:基本およびダイジェストアクセス認証」[43]で説明しています。

または代わりに

10.4.4 403 Forbidden

サーバーはリクエストを理解しましたが、リクエストの実行を拒否しています。承認は役に立たず、リクエストは繰り返されるべきではありません。リクエストメソッドがHEADではなく、サーバーがリクエストが実行されなかった理由を公開したい場合は、エンティティで拒否の理由を説明する必要があります。サーバーがこの情報をクライアントに提供したくない場合は、代わりにステータスコード404(見つかりません)を使用できます。

これらはどちらも意味的にはに比べて正確です404。リソースが存在するため、404正しくありません。401正しいはずですが、認証は必要ありません。あいまいさによるセキュリティはセキュリティではありません。403リクエストも理解されているので正しいですが、リソースは存在し、リクエストへのサービスを拒否しています。404403が起こっているのかを明らかにしたくない場合に適しています。

いずれの場合も301リダイレクトは適切ではなく、リソースは移動されていません。


2
Googleはインデックスに登録せず、401/403ステータスメッセージを返すページを削除します。同様の質問がしばらく前に出されました。代わりに、単純なnoindex使用して、robots.txtを使用
Simon Hayter

1
@ WPRookie82ページを秘密にして保護することについて-あなたはそれを間違っています。
クトゥルフ

4

1
HTTP基本認証またはダイジェスト認証(または他のRFC2617互換の認証スキーム)以外の認証方法での401の使用については、前に説明しました。現時点で私の意見は、まだ待機しているようです、実際に機能する可能性がありますが、HTTP仕様によると実際には有効ではなく、いずれにしても403または404の方が望ましいと考えています。
Ilmari Karonen 14

1
HTTP仕様によれば、401 Unauthorizedは不適切であるという他のコメントにも同意します。
スティーブンオスターミラー

1

これは管理者向けのページであり、「key」パラメーターの有無にかかわらず、ページを作成することはできません。したがって、管理者以外のWebページは404ステータスコードを送信でき、同じURLをそのまま残すことができます。リダイレクトしないでください。ページが移動したことをGoogleに通知しますが、存在しないページに移動します。

これは、Googleも同様です。ダミーページにアクセスするとどうなるかを確認してください:http : //www.google.com/analytics/asdsas


上記の投稿に対する小さな修正が1つありますhttp://www.example.com/404-error。それは、Webサイト全体の一種のグローバルな404ページなので、存在しないページにリダイレクトされないようにしています。
WPRookie82 2014

@ WPRookie82:あなたとあなたのウェブサーバー以外の人に関する限り、存在しないページと404応答を返す既存のページとの間に違いはありません。
Ilmari Karonen 2014

1

この状況の意味的に正しいHTTP応答コードは403 Forbiddenです。

サーバーはリクエストを理解しましたが、リクエストの実行を拒否しています。承認は役に立たず、リクエストは繰り返されるべきではありません。リクエストメソッドがHEADではなく、サーバーがリクエストが実行されなかった理由を公開したい場合は、エンティティで拒否の理由を説明する必要があります。サーバーがこの情報をクライアントに提供したくない場合は、代わりにステータスコード404(見つかりません)を使用できます。

(403応答の定義は、IMO、これがあると理解されなければならない、「承認はしませんヘルプ」と言っているが、HTTPベーシック/ダイジェスト認証に特異的に参照するステータスコードそのため、無断401を代わりに使用してください。あなたがしているのではない使用してこれらの認証方法のいずれかである場合、403はあなたのケースで適切なステータスコードです。


しかし、明らかになった(または少なくとも強く暗示)があったという事実403のステータスコードを使用しているページは、サーバがそれを提供することを拒否されていても、そのURLとします。これは潜在的な侵入者から隠したいものなので、HTTP / 1.1標準では明示的に404 Not Foundステータスコードを返すことが許可されています(強調は私のものです)。

サーバーは、Request-URIに一致するものを検出しませんでした。状態が一時的であるか永続的であるかは示されません。410(Gone)ステータスコードは、内部的に構成可能なメカニズムを通じて、古いリソースが永続的に利用できず、転送アドレスがないことをサーバーが認識している場合に使用する必要があります(SHOULD)。 このステータスコードは、サーバーがリクエストが拒否された理由を正確に明らかにしたくない場合、または他の応答が該当しない場合に一般的に使用されます。

もちろん、そのような隠蔽をまったく有効にするには、返す404エラーページは、実際に存在しないページに対して返すものと同じに見える必要があります。さもなければ、それは最も愚かで最も偶然の攻撃者をだますだけです。(ページが単にGoogleのインデックスに登録されないようにすることを目的としている場合は、403レスポンスでも同様に処理されます。)


質問で提案された他の可能な応答と他の回答はどうですか?

前述のとおり、ここでは401の応答が適切であるとは思いません。 それは可能限り多くのブラウザとして、実際に働いてエンジンが任意の不正な形式または認識されない4扱います検索XXのそれは404であるかのように、一連の応答コードを、それはHTTPの仕様に応じて、まだ有効ではありませんし、それを好むための実際的な理由はありません403または404以上。

別の「404エラー」ページへの301(または302)リダイレクトの使用に関しては、これはずさんなmod_rewriteチュートリアルによって広まった恐ろしい慣習であり、404応答を直接返す場合と比較して、償還機能はまったくありません。

  • 訪問者がアクセスしようとしていたURLがエラーページのURLに置き換えられるため、訪問者を混乱させます。したがって、存在しないページに到達したことを示すメッセージが表示されますが、アクセスしようとしたページが何であるかを簡単に示すことはできないため、URLの明らかなタイプミスを修正するなどの回復戦略を簡単に試すことができません。または、GoogleまたはWayback Machineにコピーして貼り付けます。

  • 特にrobots.txt404ページが許可されていない場合、または実際の404ステータスコード("soft 404")ではなく200 OK応答が誤って返された場合、検索エンジンが混乱し、404ページが検索に表示される可能性がありますランダム検索用語の結果。

  • 存在しない(または隠された)ページに対するすべてのリクエストに余分なHTTPラウンドが含まれるようになるため、サーバーに(少量の)追加の負荷が発生し、訪問者への応答時間が増加し、サイトをクロールする検索エンジンが遅くなる可能性があります。トリップ。

  • 404ページにリダイレクトされたページからの「リンクジュース」はいずれにしても失われるため、SEOの利点はありません。

(もちろん、404応答の代わりに301リダイレクトを使用たい状況の1つは、ページが実際移動したときであり、訪問者を正しい場所にリダイレクトできます。ただし、ここでは説明しません。)


最後に、ここの多くのコメントで表明されている、このような管理ページを単に「隠す」ことは、適切なパスワードベースの認証の適切な代用ではないという感情を反映させたいと思います。それは、言ったならば、あなたはすでに設定セキュアな認証システムを使用しているページがで、かなり弱いものにもかかわらず、余分な層として有用である可能性が隠れて、深さで防衛アプローチ。


ようやく、第2部で提案した内容を採用することにしました。有効なキーがないページにアクセスすると、通常の404ページが表示され、当然のことながら、ステータスコード404が返されます。
WPRookie82 2014

1

noindex,nofollow,noarchive検索から除外するページの先頭にタグを使用します。

私がいることを発見したnoarchiveのに対し、タグは、かなり気クイック検索の物事を取得する傾向がnoindex検索に入ることを停止することがありますが、そのはすでにそこに、あなたが必要な場合は、検索結果のそれをフラッシュします。

管理者アクセスの質問に関しては、ここにいる他の人たちがセキュリティに関していくつかのアドバイスをすでに提供しており、私がチェックすることをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.