2011-11-22 11 views
5

ページにアクセスするURLが元のURLかどうか、またはCNAMEレコードであるかどうかを確認する方法を教えてください。ドメイン名がPHPのCNAMEであるかどうかを確認する方法

たとえば、私はサイトdomain.comを持っています。ユーザーはwww.otherdomain.comを当社のサイトdomain.comにリンクするCNAMEを設定できます。

サーバーの観点からは、ページにアクセスするURLが実際のもの(domain.com)かCNAMEのもの(www.otherdomain.com)かどうかを検出するにはどうすればよいですか?

+0

このような考えには、専用のIPが必要ですか? – JBithell

答えて

9

この情報は通常、リクエストヘッダーには含まれないため、DNSに問い合わせる必要があると思います。

PHPドキュメントのdns_get_recordcheckdnsrr関数を見てください。

+0

dns_get_recordが正しい答えです。私はそれを働かせました。ありがとう。 – Pinkie

2

PHPDNSクラスライブラリを使用して、指定されたURLの種類のDNSレコードを見つけることができます。

$answer->results[x]->typeid //Textual record type ID (A, MX, CNAME etc) 
1

URLを確認している場合は、$_SERVER['HTTP_HOST']をPHPで使用できます。それはURLから要求されたホストです(例えば、http://otherdomain.com/blah.phpはサーバーをotherdomain.comにする)。 $_SERVER['SERVER_NAME']は、httpd.confに設定されたサーバー名です。

HTTP_HOST!= SERVER_NAMEの場合、リモートユーザーはほぼ確実にサイトにアクセスするための別名を使用しています。

+0

HTTP_HOSTとHTTP_NAMEの両方が私にotherdomain.comを与えています – Pinkie

関連する問題