web-dev-qa-db-ja.com

JavaScriptまたはjQueryを使用して301リダイレクトは可能ですか?

私はApache 2.0を実行していますが、JavaScriptまたはjQueryを使用して301リダイレクトを作成できるかどうか疑問に思っています。

を持っています <a></a>タグにhrefを付けて指定の場所に移動すると、そのリンクをクリックしたときに301リダイレクトを要求されます。

これはSEO向けであり、新しいページを作成したり、フォーム/送信を作成したりせずに、リンク内の同じページに301リダイレクトする方法を見つけようとしています。

26
Caleb Doucet

要するにNoです。

JavaScriptは完全にクライアント側で実行されます。 301リダイレクトは、サーバーからの応答として送信されることになっています。つまり、サーバーのサポートなしではこれを行うことはできません。

24
techfoobar

私はこれが古い質問であることを知っていますが、回答は実際にSEO目的の301リダイレクトである質問で提示された主要な問題に対処していません(そして、今日の回答は、質問が最初にあったときとはかなり異なる場合があります質問と回答)。

いいえ、クライアントから301リダイレクトすることはできないという答えは技術的には正しいですが、(さらに重要なことに)必ずしもそうする必要はありません。真の301が推奨されますが、このような場合(または、ハッシュバングURLから従来のURLに戻すなど)が不可能な場合、問題は、目標を達成するための実行可能な代替策があるかどうかです。

検索エンジンランドは詳細なテストを行いました JavaScriptに関するGoogleの機能のこれは、その記事からの関連する抜粋です。

  1. JavaScriptリダイレクト

最初に一般的なJavaScriptリダイレクトをテストし、URLの表現方法をさまざまに変えました。私たちが選んだメソッドはwindow.location関数です。 2つのテストが実行されました。テストAには、window.location関数で指定された絶対URLが含まれていました。テストBは相対URLを使用しました。

結果:Googleはすぐにリダイレクトを追跡しました。インデックス作成の観点から、これらは301として解釈されました。GoogleのインデックスでリダイレクトされたURLの代わりに最終状態のURLが使用されました。

その後のテストでは、信頼できるページを使用して、まったく同じコンテンツを持つサイトの新しいページへのJavaScriptリダイレクトを実装しました。元のURLは、人気のあるクエリでGoogleの最初のページにランクされました。

結果:予想どおり、リダイレクトの後にGoogleが実行され、元のページがインデックスから削除されました。新しいURLにインデックスが付けられ、すぐに同じクエリの同じ位置にランク付けされました。これは私たちを驚かせ、JavaScriptリダイレクトが(時々)ランキングの観点から永続的な301リダイレクトとまったく同じように動作できることを示しているようです。

次にクライアントがサイト移転のためにJavaScriptリダイレクトを実装する場合、答えは「しないでください」である必要はありません。この関係には、ランキング信号の転送があるようです。この発見を支持するのは Googleのガイドライン からの引用です:

「JavaScriptを使用してユーザーをリダイレクトすることは正当な慣行です。たとえば、ユーザーがログインした後でユーザーを内部ページにリダイレクトする場合、JavaScriptを使用してリダイレクトできます。JavaScriptまたはその他のリダイレクト方法を調べて、サイトに準拠していることを確認する場合ガイドラインに従って、意図を考慮してください。301リダイレクトはサイトを移動するときに最適ですが、Webサイトのサーバーにアクセスできない場合は、この目的でJavaScriptリダイレクトを使用できます。」

17
Chris Searles

301はサーバー応答コードです。 jQueryから301リダイレクトを作成することはできません。

PHPから301を実行する必要があります。

7

1リダイレクト は永続的なリダイレクトであり、基本的にHTTPサーバーの応答です。 JavaScript/jQueryは、クライアントで実行されるものです。 2つの異なる世界。

代わりに、サーバーでそれを実行できない場合は、実際に最終URLを入力できます。

または、現在のページをリダイレクトできるかどうか尋ねている場合は、METAリダイレクトを使用するか、window.locationを変更することで可能です。

Apacheを使用している場合は mod_rewrite を使用して301リダイレクトを実行できます。

2
Adrian Ber

これがSEO目的のみの場合、これは機能します
<meta http-equiv="refresh" content="0;url=YOUR_URL">
Googleはこれを301リダイレクトと見なしていますが、そうではありません

0
Abhishek