如何正确使用谷歌索引API与PHP?

lzfw57am  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(223)

我已经在我的网站上配置了谷歌索引API。我正在使用原始PHP,我想知道如何正确地使用它?
这是谷歌的代码

require_once '../indexapi/vendor/autoload.php';

$client = new Google_Client();

$client->setAuthConfig('../indexapi/service_account_file.json');
$client->addScope('https://www.googleapis.com/auth/indexing');

$httpClient = $client->authorize();
$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

$content = '{
  "url": "mydomain.com/",
  "type": "URL_UPDATED"
}';

$response = $httpClient->post($endpoint, [ 'body' => $content ]);
$status_code = $response->getStatusCode();

它的工作完美,我得到的状态代码= 200。
但我想知道的是--这是发送多个url进行索引的正确方法吗?

$content = '{
  "url": "mydomain.com/","mydomain.com/page-1","mydomain.com/page-2",
  "type": "URL_UPDATED"
}';

还是这个

$content = '{
  "url": "mydomain.com/",
  "type": "URL_UPDATED",
  "url": "mydomain.com/page-1",
  "type": "URL_UPDATED",
  "url": "mydomain.com/page-2",
  "type": "URL_UPDATED"
}';

或者,如果我include这个代码在我的网站标题,并使用这种方法-

$url = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$content = '{
  "url": $url,
  "type": "URL_UPDATED"
  ----- OR
  "url": ".$url.", 
  "type": "URL_UPDATED"
  // Nothing treating this $url as a variable in my editor.
}';

它会工作吗?比如,每次有人要访问我的网站页面之一,代码自动生成一个请求,谷歌索引它。
如果答案是肯定的,那么我想再说一件事,那就是变量$url不适合$content变量,我使用了".$url."的格式,但是它没有被当作变量,这里的问题是,如何在"url":参数中使用变量?
我还想知道,如果我把代码include到我的头中,那么每次用户重新加载一个页面时,它会一次又一次地发送索引同一个网址的请求吗?这不好吗?
总的来说,我想知道的是,如何正确使用这段代码(下面)来索引我的网站的每一个网址?也如何使用变量在这个$content = '{ - }'

$content = '{
  "url": "mydomain.com",
  "type": "URL_UPDATED"
}';

先谢了。

mklgxw1f

mklgxw1f1#

问题解决。
我创造了一种形式-

<form action="" method="POST">
    <input type="text" name="url">
    <input type="hidden" name="type" value="URL_UPDATED">
    <button type="submit">Index Url</button>
</form>

然后我用了这个POST方法-

require_once 'indexapi/vendor/autoload.php';

$client = new Google_Client();

if ($_SERVER['REQUEST_METHOD'] == "POST") {

    $url   = $_POST['url'];
    $type  = $_POST['type'];

    // Made an array with specific index name, what the api want!
    $array = ['url' => $url, 'type' => $type];

    // service_account_file.json, the private key created from service account.
    $client->setAuthConfig('indexapi/service_account_file.json');
    $client->addScope('https://www.googleapis.com/auth/indexing');

    // Get a Guzzle HTTP Client
    $httpClient = $client->authorize();
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

    // The contents
    // In here I json encoded the array I created earlier above.
    $content = json_encode($array);

    $response = $httpClient->post($endpoint, [ 'body' => $content ]);
    $status_code = $response->getStatusCode();

}

如果您运行这段代码并提交输入字段中带有url的表单,它将向API发送POST请求以索引url。
要查看它是否成功提交,只需检查状态代码是否返回200。
每次提交表单时,您可以发送单个url索引请求。

相关问题