20

JSを使用する:(タグ内<head>

<script>window.location="https://stackoverflow.com";</script>

PHPの使用:(タグ内<head>

header('Location: https://stackoverflow.com');
end();

どちらを使うべきですか?または別の?

そして、使用する <meta>のはどうですか?

<meta http-equiv="refresh" content="0;url=https://stackoverflow.com"/> 

多くの良い答え、私はどの答えを受け入れるかわかりません、どうもありがとう

4

5 に答える 5

26

結果はすべてのオプションで同じです。リダイレクト。

<meta>HTMLの場合:

  • サイトのコンテンツを表示し、数秒(または0秒)後にユーザーをリダイレクトします。
  • JavaScriptを有効にする必要はありません。
  • PHPは必要ありません。

window.locationJSで:

  • Javascriptを有効にする必要があります。
  • PHPは必要ありません。
  • サイトのコンテンツを表示し、数秒(または0秒)後にユーザーをリダイレクトします。
  • リダイレクトは、任意の条件に依存する可能性がありますif (1 === 1) { window.location.href = 'http://example.com'; }

header('Location:')PHPの場合:

  • JavaScriptを有効にする必要はありません。
  • PHPが必要です。
  • リダイレクトが最初に実行され、ユーザーはその後に何が表示されるかを確認できません。header()他のコマンドを出力する前に、phpスクリプトの最初のコマンドである必要があります。ヘッダーの前に出力しようとすると、Warning: Cannot modify header information - headers already sent
于 2013-03-27T09:04:12.017 に答える
12

JSで場所を設定するためのより良い方法は、次の方法です。

window.location.href = 'https://stackoverflow.com';

PHPとJSのどちらを使用してリダイレクトを管理するかは、コードの実行内容と方法によって異なります。しかし、PHPを使用できる立場にある場合は、つまり、PHPを使用してJSコードをブラウザーに送り返し、ブラウザーに別の場所に移動するように指示する場合、ロジックは、仲介者を切り取って、PHPを介してブラウザーに直接指示することを提案します。

于 2013-03-27T09:09:13.450 に答える
8

これは、ユーザーをいつどのように別のページにリダイレクトするかによって異なります。

ユーザーが間にサイトを表示せずにすぐに別のページにリダイレクトheaderする場合は、PHPリダイレクトメソッドを使用する必要があります。

Javascriptを使用していて、ユーザーのアクションによってユーザーが別のページに入る必要がある場合は、を使用する必要がありますwindow.location

タグの更新は、metaこれらの「ダウンロードは自動的に開始されます」というメッセージが表示されるたびに、ダウンロードサイトでよく使用されます。ユーザーにページをロードさせ、一定時間待ってから、Javascriptなしでユーザーをリダイレクト(ダウンロードするファイルなど)することができます。

于 2013-03-27T09:18:00.937 に答える
3

PHPリダイレクトは、JavaScriptの場合と同様に、リダイレクトの前にクライアントにページをロードさせることができれば優れていますが、PHPの場合は、適切なヘッダーを送信します。

ただし、PHPは<head>に入れるべきではなく、出力がクライアントに送信される前に入れる必要があります。そうしないと、エラーが発生します。

<meta>タグを使用すると、リダイレクトを実行する前に最初のページが読み込まれるという点で、Javascriptと同じ問題が発生します。サーバー側のリダイレクトは、使用できる場合はほとんどの場合優れています。

于 2013-03-27T09:06:14.907 に答える
2

JSがオフの場合、最初のケースは失敗します。また、JSを最初に解析する必要があるため(DOMをロードする必要があるため)、少し遅くなります。ただし、宛先がリファラーを認識せず、リダイレクトが追跡される可能性があるため、JSの方が安全です(リファラーは一般的に信頼できませんが、これは何かです)。

メタリフレッシュタグを使用することもできます。また、DOMをロードする必要があります。

于 2013-03-27T09:05:58.733 に答える