0

Nginx では、次のようにすべてのキャッチを設定しています。

server {
    listen   80;
    server_name  *.example.com;

    location / {
        root   /data/sites/www.example.com/widgets/public_html;
        index  index.php index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ .php$ {
      root          /data/sites/www.examples.com/widgets/public_html;
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_index  index.php;
      include        fastcgi_params;
    }
}

abc.example.com と入力すると、機能します。PHPでは、サブドメインを読み取る必要があります。私は次のようにサブドメインを取得しています:

$url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$urlSegments = parse_url($url);
$urlHostSegments = explode('.', $urlSegments['host']);
$subdomain = $urlHostSegments[0];

問題は、サブドメインとしてabcを返すのではなく、 *を返すことです。では、PHP と NGINX の場合、キャッチ オールで実際のサブドメインを取得するにはどうすればよいでしょうか?

4

2 に答える 2

1
print_r($_SERVER);

正しい変数を知る。

もちろん、そうではHTTP_HOSTありませんSERVER_NAME

于 2013-08-12T12:34:18.727 に答える
1

試す:

array_shift(explode(".",$_SERVER['HTTP_HOST']));
于 2013-08-12T12:33:35.197 に答える