- Saved searches
- Use saved searches to filter your results more quickly
- berkaycatak/php-google-indexing-api
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Пример использования Google Indexing API на PHP
- Шаг 1. Проверьте наличие ресурса в Google Search Console
- Шаг 2. Создание сервисного аккаунта в Google Cloud Platform
- Шаг 3. Создание ключа для аутентификации Google API
- Шаг 4. Добавление сервисного аккаунта в качестве владельца сайта
- Шаг 5. Установка клиентской библиотеки для Google API
- Шаг 6. Примеры кода
- How does google Index dynamic PHP pages?
- 1 Answer 1
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Indexing project written in PHP, using Google Indexing Api. PHP Google Indexing API.
berkaycatak/php-google-indexing-api
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Indexing project written in PHP, using Google Indexing Api.
Add your json file to the following directory.
Interface — Fill in the inputs.
Password: The name of your json file. (medialyra.com for medialyra.com.json)
Website address: The website you want indexed.
http://localhost/api/?url=https://www.your-website.com
http://localhost/api/?method=1&url=https://www.your-website.com
http://localhost/api/?method=2&url=https://www.your-website.com
http://localhost/api/multiple?urls[]=https://www.your-website.com&urls[]=https://www.your-website.com/contact
http://localhost/api/multiple?method=1&urls[]=https://www.your-website.com&urls[]=https://www.your-website.com/contact
http://localhost/api/multiple?method=2&urls[]=https://www.your-website.com&urls[]=https://www.your-website.com/contact
You can use Composer or simply Download the Release
The preferred method is via composer. Follow the installation instructions if you do not already have composer installed.
Enter the name of your JSON file:
Line 15 in app/controllers/home.php
... $googleClient->setAuthConfig( 'YOUR_JSON_FILE_NANME.json' ); ...
Line 15 in app/controllers/multiple.php
... $googleClient->setAuthConfig( 'YOUR_JSON_FILE_NANME.json' ); ...
If your PHP version is below 8
composer install --ignore-platform-reqs
2- Edit the following file as indicated:
Line 104 in vendor/psr/cache/src/CacheItemInterface.php
... public function expiresAfter($time); ...
Line 30 in vendor/psr/log/src/LoggerInterface.php
... public function emergency( $message, array $context = []); ...
Line 43 in vendor/psr/log/src/LoggerInterface.php
... public function alert( $message, array $context = []); ...
Line 55 in vendor/psr/log/src/LoggerInterface.php
... public function critical( $message, array $context = []); ...
Line 66 in vendor/psr/log/src/LoggerInterface.php
... public function error( $message, array $context = []); ...
Line 79 in vendor/psr/log/src/LoggerInterface.php
... public function warning( $message, array $context = []); ...
Line 89 in vendor/psr/log/src/LoggerInterface.php
... public function notice( $message, array $context = []); ...
Line 101 in vendor/psr/log/src/LoggerInterface.php
... public function info( $message, array $context = []); ...
Line 111 in vendor/psr/log/src/LoggerInterface.php
... public function debug( $message, array $context = []); ...
Line 124 in vendor/psr/log/src/LoggerInterface.php
... public function log($level, $message, array $context = []); ...
About
Indexing project written in PHP, using Google Indexing Api. PHP Google Indexing API.
Пример использования Google Indexing API на PHP
В этой статье приведена подробная инструкция по использованию Google Indexing API и выполнению запросов на индексирование страниц через PHP. Indexing API — это очень простой способ для информирования Google об изменениях у вас на сайте.
Шаг 1. Проверьте наличие ресурса в Google Search Console
На этом шаге необходимо проверить наличие ресурса в Google Search Console. Если он уже у вас добавлен в консоль, то этот шаг можно пропустить.
1. Перейдите на страницу https://search.google.com/search-console/welcome и войдите, используя свою учетную запись Google.
2. Откройте меню в левом верхнем углу и нажмите «Добавить ресурс».
3. Если у вас нет доступа к вашим DNS-записям или не достаточно опыта, то можно просто использовать опцию «Ресурс с префиксом в URL». Введите URL и нажмите «Продолжить».
4. Выберите метод подтверждения. Самый простой — HTML-файл. Скачайте HTML-файл и загрузите его в корень вашего домена. После этого нажмите кнопку «Подтвердить».
Шаг 2. Создание сервисного аккаунта в Google Cloud Platform
2. Выберите проект (если он не создан, его необходимо создать) и нажмите на «Create service account (создать сервисный аккаунт)».
3. Заполните данные учетной записи.
Шаг 3. Создание ключа для аутентификации Google API
Теперь создадим закрытый ключ в формате JSON. Ключ будем использовать в PHP для доступа к API Google.
1. Нажмите на адрес электронной почты сервисного аккаунта.
2. Выберите «Keys (ключи)» -> «Add key (Добавить ключ)» -> «Create new key (Создать новый ключ)».
3. Выберите JSON и нажмите «Create (Создать)». Созданный ключ будет загружен вам на компьютер.
Шаг 4. Добавление сервисного аккаунта в качестве владельца сайта
На этом шаге нужно добавить учетную запись службы Google в качестве владельца домена в Google Search Console. После этого эта учетная запись получит доступ к свойствам вашего домена через Google API.
2. Перейдите в «Настройки» (при необходимости выберите нужный ресурс).
3. Выберите пункт «Пользователи и разрешения».
4. Нажмите на кнопку «Добавить пользователя». Теперь вставьте адрес электронной почты учетной записи сервисного аккаунта.
Шаг 5. Установка клиентской библиотеки для Google API
Для обращения к Indexing API нам потребуются клиентские библиотеки Google API (ссылка на страницу GitHub и полную документацию: https://github.com/googleapis/google-api-php-client).
Установить библиотеки можно с помощью Composer или вручную.
Для загрузки с помощью Composer достаточно открыть консоль и написать в ней команду:
composer require google/apiclient
Самостоятельно скачать архив последней версии библиотеки для нужной версии PHP можно с GitHub на странице Releases · googleapis/google-api-php-client. После загрузки архива на компьютер, разархивируйте его содержимое в папку вашего проекта.
Подключение библиотеки в свой проект выполняется посредством:
require_once '/path/to/vendor/autoload.php';
Шаг 6. Примеры кода
- каталог vendor содержит библиотеки Google API, которые были установлены с помощью Composer;
- composer.json – файл, который был автоматически создан Composer и содержит список установленных с помощью этого инструмента библиотек;
- api-project-696409.json – файл, содержащий секретный ключ, который мы создали и скачали на 3 шаге;
- index.html – HTML страница, на которую поместим для указания URL, кнопки для выполнения различных действий и для вывода ответа Indexing API;
- main.js — JavaScript сценарий для отправки AJAX запроса на сервер;
- indexing.php — серверный php-сценарий для отправки запроса в Google Indexing API.
В HTML создадим страницу со следующим содержимым (оформление выполним на Bootstrap 5):
Результат:
.
- элемент предназначен для указания URL-адреса;
- кнопка с id=»get-status» применяется для получения статуса уведомления (т.е. показывает ответ, когда сервер Google в последний раз получал запрос для указанного URL);
- кнопка с id=»update» предназначена для обновления URL (отправляет запрос на индексацию, т.е. когда это новый URL и его нужно просканировать, либо когда в нём произошло изменение контента);
- кнопка с id=»delete» используется для отправки запроса на удаление URL из индекса;
- элемент применяется для вывода тела ответа на запрос Indexing API.
Отправку запроса на сервер будем выполнять через AJAX с использованием fetch() и async/await:
// асинхронная функция для отправки запроса на сервере и вывода от него ответа в #result const getURLStatus = async(url, action = 'get') => { try { const data = new FormData(); data.append('url', url); data.append('action', action); let response = await fetch('/php/indexing.php', { method: 'post', body: data }); document.querySelector('#result').innerHTML = ''; document.querySelector('#url').classList.remove('is-invalid'); document.querySelector('.invalid-feedback').textContent = ''; if (response.ok) { let result = await response.json(); if (result['result'] === 'error') { const error = result['error']; document.querySelector('#url').classList.add('is-invalid'); document.querySelector('.invalid-feedback').textContent = error; } else { document.querySelector('#result').innerHTML = `
${result.body}`; } } } catch (error) { document.querySelector('#result').innerHTML = error; } } // при нажатии на кнопку #get-status document.querySelector('#get-status').onclick = () =< { getURLStatus(document.querySelector('#url').value); } // при нажатии на кнопку #update document.querySelector('#update').onclick = () =< { getURLStatus(document.querySelector('#url').value, 'update'); } // при нажатии на кнопку #delete document.querySelector('#delete').onclick = () =< { getURLStatus(document.querySelector('#url').value, 'delete'); }
Серверный сценарий на PHP:
'success' ]; $url = $_POST['url']; $action = $_POST['action']; $type = $action == 'update' ? 'URL_UPDATED' : 'URL_DELETED'; if (!filter_var($url, FILTER_VALIDATE_URL)) { $data['result'] = 'error'; $data['error'] = 'URL не является корректным.'; echo json_encode($data); exit(); } $client = new Google_Client(); // file-containing-secret-key.json - секретный ключ для доступа к API Google $client->setAuthConfig('file-containing-secret-key.json'); $client->addScope('https://www.googleapis.com/auth/indexing'); $httpClient = $client->authorize(); $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish'; if ($action == 'get') { $response = $httpClient->get('https://indexing.googleapis.com/v3/urlNotifications/metadata?url=' . urlencode($url)); } else { $content = json_encode([ 'url' => $url, 'type' => $type ]); $response = $httpClient->post($endpoint, ['body' => $content]); } $data['body'] = (string) $response->getBody(); echo json_encode($data);
Пример создания запроса на получение статуса уведомления для указанного URL:
Пример создания запроса на обновление URL:
Доступ к странице, ключу и серверному сценарию должен быть предоставлен только администраторам. Кроме того, когда вы работаете и тестируете, вы можете использовать только те домены, которые вы связали со своей учетной записью службы Google. Если вы попытаетесь использовать домены, которые не подтвердили и не связали со своей учетной записью службы Google, то получите ошибки.
How does google Index dynamic PHP pages?
Lets say I have 400 articles. How does google find all of them. When I get a sitemap generator to generate a sitemap it dosnt see them and google isnt indexing them. How do I get Google to index these pages?
How long have you waited? It can take weeks if not months for Google to index your site. As it is, there is not enough actionable detail for us to answer this question. Have you tried using Google Search Console - Fetch as Google to see if Google can see you content correctly? If not, that is your first step. As well, make sure your content is linked to. Sitemaps generally do nothing. They are primarily used for auditing whether Google can effectively crawl your site. If not, then the sitemap may be used to spot check your site. Your site should be crawlable. Do not rely on a sitemap.
and yes i used fetch with google and it fetched them but I want it to do it automatically like it does with regualr php pages
Sitemaps are not needed to get content indexed, nor do they actually help do so. See The Sitemap Paradox.
It takes weeks if not moths. Google generally does start right away, but will go according to it's own priorities. Search engines are not real-time nor can they be. It is impossible. The web is just too huge.
1 Answer 1
When I get a sitemap generator to generate a sitemap it dosnt see them
Since you are already allowing users to generate content you would seem to be in the best position to generate the sitemap; not an external tool. When the sitemap changes, you can optionally ping Google.
If an external sitemap generator is unable to find these pages then it's because the new pages aren't being linked to and your site cannot be crawled successfully.
In addition to the XML sitemap, you should probably be generating some kind of HTML index/sitemap that enables the new pages to be crawled easily.
do it automatically like it does with regualr php pages
These are regular PHP pages. article.php?id=123 might sometimes be referred to as a dynamic URL, but really there's no difference.
Sounds like a moderation nightmare?! Is this content worthy of being indexed??