1

$_SERVER['HTTP_HOST']&を試し$_SERVER['SERVER_NAME']ましたが、どちらもsub.domain.comを返します。URL がsub.domain.comか、単に domain.comかを確認したいのです。

スクリプトは sub.domain.com で実行され、両方とも同じデータを返します。

$_SERVER['HTTP_HOST']戻り値: sub.domain.com $_SERVER['SERVER_NAME']戻り値: sub.domain.com

URL の domain.com 部分のみを取得したいと考えています。スクリプトは任意のサブドメイン名で実行される可能性があるため、上記の両方の変数が同じ情報を返すため、実行方法がわかりません。

4

3 に答える 3

4

HTTP_HOST を確認します。通常はどちらも同じですが、SERVER_NAME の設定が異なる場合があります。疑わしい場合は、両方を確認してください。

'HTTP_HOST'
現在のリクエストの Host: ヘッダーの内容 (存在する場合)。

http://php.net/manual/en/reserved.variables.server.php

それらを確認する方法については、プライマリ ドメイン名に対して文字列置換を実行し、結果の文字列が空かどうかを確認できます。残ったものはすべてサブドメインになります。


些細な文字列操作を探している限り、最後の 2 つの部分は次のとおりです。

$yourhost = implode('.', array_slice(explode('.', $_SERVER['HTTP_HOST']), -2));
于 2012-05-30T21:33:23.833 に答える
0

少し汚いハック

$explodedHost = explode('.', $_SERVER['HTTP_HOST']);
$size         = count($explodedHost);
$domain       = $explodedHost[$size - 2] . '.' . $explodedHost[$size - 1] . 'com';
if ($_SERVER['HTTP_HOST'] == $domain) {
  // you are on domain.com
}
于 2012-05-30T21:36:36.037 に答える
0

以下の機能を試すことができます(php.netにあります)

<?php 
function getHost($Address) { 
$parseUrl = parse_url(trim($Address)); 
return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path],     2))); 
} 

getHost("example.com"); // Gives example.com 
getHost("http://example.com"); // Gives example.com 
getHost("www.example.com"); // Gives www.example.com 
getHost("http://example.com/xyz"); // Gives example.com 
?> 
于 2012-05-30T21:36:20.437 に答える