7

In PHP, how can I check if the current page has www in the url or not?

E.g if the user is on http://www.example.com/something , how can I find that there's www in the URL, and on http://example.com/something , www isn't in the url?

4

6 回答 6

11

您可以使用$_SERVER['HTTP_HOST']来获取您的域。现在,如果您的网站不使用子域,这很容易。只需使用这样的东西:

$url1 = "www.domain.com";
$params = explode('.', $url1);

if(sizeof($params === 3) AND $params[0] == 'www') {
    // www exists   
}

请注意,如果您的 params 数组有 2 个项目,则 domain 看起来像这样domain.com并且没有www明确的。您甚至可以检查数组的大小并根据其大小$params决定是否存在。www

现在,如果您的站点使用子域,那么它会变得更加复杂。您可能会遇到以下情况:

$url1 = "www.domain.com";
$url2 = "www.sub.domain.com";
$url3 = "domain.com";
$url4 = "sub.domain.com";

然后你会再次分解每个 url,比较大小并检查第一项是否是“www”。www但请注意,您的子域可以命名www为子域:D 然后它看起来像这样:www.domain.com,再一次,www是子域:) 这太疯狂了,我几乎对这个发疯了 :)

无论如何,要检查www站点何时不使用子域,这很容易。但是要检查 url 是否有www并且您的网站是否正在使用子域,这可能很困难。如果可以的话,处理该问题的最简单的解决方案是禁用www子域。

如果您需要更多帮助并且这不能回答您的问题,请随时提问。我有类似的情况,用户可以创建自己的子域帐户,例如www.user.domain.com,我必须做同样的事情。

希望这可以帮助!

于 2012-11-12T00:37:56.757 回答
7

你可以这样做preg_match

if(preg_match('/www/', $_SERVER['HTTP_HOST']))
{
  echo 'you got www in your adress';
}
else
{
  echo 'you don not have www';
}

您甚至可以使用 .htaccess 来执行此操作,具体取决于您正在构建的内容,上述选项对于简单检测来说很好。

如果您选择 Ferdia 提供的选项,请按以下方式进行检查:

$domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));
if(in_array('www', $domain))
{
    echo 'JUP!';
}
于 2012-11-12T00:04:37.233 回答
4

你已经知道网址了吗?然后拿这个:

<?php
$parsed = parse_url("http://www.example.com/something");
$hasWww = strpos($parsed['host'], "www.") === 0;
var_dump($hasWww);

否则,采取

 strpos($_SERVER['HTTP_HOST'], "www.") === 0
于 2012-11-11T23:59:26.007 回答
2

有很多方法可以检查 www 是否包含。

一种方法是:

if(strpos($_SERVER['HTTP_HOST'], `www`) !== false) {
    echo "WWW found";
} else {
    echo "WWW not found";
}
于 2016-12-27T21:40:42.643 回答
1
array_shift(explode(".",$_SERVER['HTTP_HOST']));

Should work, then examine the array for the presence of www. If you are simply trying to remove or force www, then a .htaccess rule is by far superior to PHP for that job.

于 2012-11-11T23:55:58.710 回答
1

从手册

$_SERVER['HTTP_HOST']

主机内容:当前请求的标头(如果有)。

$_SERVER['SERVER_NAME']

当前脚本在其下执行的服务器主机的名称。如果脚本在虚拟主机上运行,​​这将是为该虚拟主机定义的值。

于 2012-11-12T00:00:52.667 回答