2011-08-01 16 views
0

PHPでユーザーをリダイレクトする場合、私が知っていることは、ヘッダー( 'Location:' http://www.example.com)を使用することでしたが、これはユーザーをページ間でリダイレクトします。ユーザーをリダイレクトできる他のオプションは何ですか?PHPのリダイレクト

例:一番下にそれは言う:
を覚えておくことが重要

何かを...私は別のページに周りのユーザーをバウンスするヘッダを()を使用して、例えば、お勧めしません。 ;ページのロードの数を削減し、ユーザーはより流動的な経験を与えるより良い方法...

http://tinsology.net/2009/06/creating-a-secure-login-system-the-right-way/

+0

また、クライアント側からリダイレクトすることもできます:window.url = 'newUrl'; – ThatGuy

答えて

1

あなたが提供するスニペットはpage1.phpは、いくつかのコードheader('Lodation: http://www.example.com/page2.php ');が続くとpage2.phpが、その後header('Location: http://www.example.com/page3.php ');に続くいくつかのコードを実行を実行する可能性のある問題を参照していますこれは非常にで、ユーザーエクスペリエンスが悪く、コード管理にもあまり適していません。

のユーザーをリダイレクトする必要がある場合(おそらく301リダイレクトが最も一般的です)、headerを使用すると完全に受け入れられます。

+0

私はあなたの言うことの違いをよく理解していません。 2つのリダイレクトが連続してないことを意味しますか? –

+0

@Howdy_McGee、複数のリダイレクト、またはインクルードが適切な場合のリダイレクトは問題です。初心者が非常に具体的な作業を行うためのPHPページを作成し、 'include'を使う代わりに、' header'を使って別のページにユーザーを渡そうとするのはよくあることです。ブラウザに特定のヘッダーを送信する必要があると判断しない限り、通常はヘッダーを使用しません。ページが永久に移動した場合は、 '301'リダイレクトヘッダーと新しい場所を使用します。リソースが見つからなかった場合は、' 404'ヘッダーを送信し、場合によってはサイトマップでページを埋め込みます。 – zzzzBov

+0

私はheader.phpやfooter.phpを含めていない限り 'include'を使わないようにしています。読み込み時に混乱するphpの中にあるすべてのものを読み込むためです。私は301と404であなたの言っていることを理解しています。上記のポスターのようにカスタムエラーページにリダイレクトするとき、javascriptは私の基本オプションだと思います。 –

1

は、それは悪いことではありませんがあります。しかし、301のレスポンスコードを追加すると、より良いものにすることができます。また、Googleがもう「古い」サイトにアクセスすべきではないと判断する方が良いでしょう。

<?php 
Header("HTTP/1.1 301 Moved Permanently"); 
Header("Location: http://www.new-url.com"); 
?> 
+0

まあ、永久的なリダイレクトの代わりに単純な「コードを実行してリダイレクトする」場合はどうなりますか? –

+0

このヘッダの前にそれを使用し、その後にこのコード(2行目)を入れてください – genesis

0

これは、PHPベースのリダイレクトで受け入れられる方法です。 PHPスクリプトの実行前にリダイレクトを行うことができれば、.htaccessまたはサーバーレベルのエイリアシングを行う必要があります。

headerにマニュアルをチェックアウト:http://php.net/manual/en/function.header.php

-2

ただ、時々ヘッダが既に呼ばれているので、それが内部header()を使用しないように、常に賢明です

header("Location: http://www.example.com"); 
+0

なぜそれが悪いのか説明しません – genesis

+0

何も悪いことはありません。これは、PHPで受け入れられる方法です。 – Mark

+0

これは私が避けようとしていることです... –

0

を使用しています。 JavaScriptのリダイレクトは絶対に問題はなく、多くのWebアプリケーションで系統的に使用されています。ブラウザと検索エンジンは、JavaScriptのリダイレクトを差別したり嫌うことはありません。簡単な例:

<?php echo '<script type="text/javascript">window.location.href="index.php"</script>'; ?> 

または変数を使用して:

<?php echo '<script type="text/javascript">window.location.href="' . $page . '"</script>'; ?> 
+0

もしこれが正しければ、誰かがそれを論争しない限り、それは最良の答えのようです。 –

+0

JavaScriptのリダイレクトはリダイレクトを行う最悪の方法です。ヘッダーが呼び出されたかどうかは、 'header'呼び出しを使用したかどうか、' echo'などの出力を送信したかどうかに基づいて判断する必要があります。ユーザーに出力を部分的に送信した場合、そのデータから離れるように指示するのはなぜですか?さらに、JavaScriptが有効になっていないユーザーは、リダイレクトに従うことができません。 JSリダイレクトのSEOに関する検証も確認したいと思います。 – zzzzBov

+0

@Jamie "スクリプトが以前に' header() '関数を使用していたかどうかはわかりませんが、"あなたは話していますか? "(http://www.php.net/manual/en/function .headers-list.php)?! [もちろん、ヘッダーが送信されたかどうかを知ることができます](http://php.net/manual/en/function.headers-sent.php)。 – zzzzBov