0

ブラウザのアドレスバーに表示されるページアドレスを正確に取得する方法を探しています。

私のサイトは基本的に PHP スクリプトであり、ユーザーがサイトにアクセスするためにhttp://mysite.comまたはhttp://www.mysite.comを使用するか、 mysite.com または www.mysite.com のみを使用するかを判断することが目標です。この情報を使用してリンクをリダイレクトし、単一の形式になるようにしたいと考えています。これは、私が使用している一部のサードパーティ ツールに必要です。

だから私が求めているのは、ブラウザがそれを要求している方法とまったく同じように、サイトの URL を PHP で取得できるかどうかです。

4

3 に答える 3

3

と の違いはwww.mysite.commysite.com見ればわかります$_SERVER['HTTP_HOST']が、ブラウザは常に URL に自動的に追加http://するため (一部のブラウザでは不要な情報としてユーザーに表示されません)、ユーザーが実際に何を入力したかを知る方法はありません。

于 2013-07-12T21:07:17.517 に答える
2

HTTP リクエストの最初の 2 行は次のようになります。

GET /index.php
Host: www.mysite.com

1 行目はローカル リソース (通常は Web ディレクトリ内のファイル) を指定し、2 行目はユーザーがサイトを見つけるために入力したホスト名を指定します (これは、複数の仮想 Web ホストを実行しているサーバーで特に役立ちます)。PHP では、これらの両方を抽出できます。

$_SERVER['HTTP_HOST']
$_SERVER['PHP_SELF']

技術的に$_SERVER['PHP_SELF']は、この Web ホストのルート ディレクトリに相対的な現在の PHP スクリプトのファイルパスを指定しますが、実際には、HTTP 要求の最初の行にリストされているリソースと同じにする必要があります。

他の回答で述べたように、ユーザーが入力したかどうかを判断する方法はありhttp://ません。

于 2013-07-12T21:34:35.747 に答える
0

ユーザーが http:// を入力したのか、それとも PHP から直接入力しなかったのかを判断することはできません。PHP は、最終的なドメイン名 ( ) しか認識できません$_SERVER['HTTP_HOST']。他の機能はブラウザで処理されます。

于 2013-07-12T21:06:21.103 に答える