laravel-freelancer-nl / laravel-index-now
通知搜索引擎内容变更。
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.4
- illuminate/contracts: ^9.0|^10.0|^11.0
- nunomaduro/termwind: ^1.10|^2.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- laravel/pint: ^1.13
- nunomaduro/larastan: ^2.2.0
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.26
- phpmd/phpmd: ^2.14
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.8
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
- timacdonald/log-fake: ^2.2
README
此包提供了一个用于在Laravel中调用IndexNow API的包装器。这使得在(某些)搜索引擎中快速索引新网页变得简单快捷。它是网站地图的一个很好的补充。
IndexNow 是由微软Bing和Yandex创建的一个API,允许您快速将其页面变更提交给他们的搜索引擎。向一个搜索引擎的提交将自动传递给其他搜索引擎。
在撰写本文时,Google正在考虑支持该API,并且已宣布它将对其进行测试。
安装
您可以通过Composer安装此包
composer require laravel-freelancer-nl/laravel-index-now
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="index-now-config"
这是发布配置文件的内容
return [ 'host' => env('APP_URL', 'localhost'), 'key' => env('INDEXNOW_KEY', ''), 'key-location' => env('INDEXNOW_KEY_LOCATION', ''), 'log-failed-submits' => env('INDEXNOW_LOG_FAILED_SUBMITS', true), 'production-env' => env('INDEXNOW_PRODUCTION_ENV', 'production'), 'search-engine' => env('INDEXNOW_SEARCH_ENGINE', 'api.indexnow.org'), 'delay' => env('INDEXNOW_SUBMIT_DELAY', 600), ];
- host:您要将页面提交给搜索引擎的域名
- key:此域的唯一密钥(您将在下一步中生成一个)
- key-location:密钥文件的目录和/或前缀
- log-failed-submits:在非生产环境中禁用提交尝试的日志记录
- production-env:生产环境的名称
- search-engine:您希望提交的特定搜索引擎的域名
- delay:延迟页面提交的秒数
生成新的密钥
IndexNow API将请求密钥与主机域名内的密钥文件匹配。要生成密钥文件,请使用以下Artisan命令
php artisan index-now:generate-key
这将在您项目的public_dir()中创建一个密钥文件,并输出密钥。复制显示的密钥并将其放置在您的.env文件中。
如果您已在配置中设置了密钥位置,则将在文件之前添加前缀。
运行此命令多次将生成新的密钥和密钥文件。
仅提交生产环境中的页面
您可能不想在除生产环境之外的环境中提交页面。
默认情况下,此包假定您的生产环境名为'production',并且仅在匹配包中配置的名称时才会提交。
在环境不匹配的情况下,它将记录提交'尝试'而不是将页面实际提交给搜索引擎。
如果您使用生产环境的替代名称,可以在.env中设置INDEXNOW_PRODUCTION_ENV以匹配。
您可以通过将INDEXNOW_PRODUCTION_ENV设置为false来禁用此功能。
用法
您可以通过调用外观并传递URL(s)到提交方法来提交一个或多个页面。
请注意,URL必须完全限定,不带查询参数和片段。
提交单个页面
use LaravelFreelancerNL\LaravelIndexNow\Facades\IndexNow; IndexNow::submit('https://dejacht.nl/jagen');
提交多个页面
要一次性提交多个页面,只需添加URL数组。
use LaravelFreelancerNL\LaravelIndexNow\Facades\IndexNow; IndexNow::submit([ 'https://dejacht.nl', 'https://dejacht.nl/fotoquiz/', 'https://dejacht.nl/jagen/', 'https://dejacht.nl/jachtvideos/', ]);
防止垃圾邮件:延迟页面提交
您可以通过使用delaySubmission方法来延迟页面提交。这将使用配置的延迟(以秒为单位)调度IndexNowSubmitJob。作业按有效负载唯一,因此相同的URL的多次提交不会在当前作业处理之前将作业推送到队列。
use LaravelFreelancerNL\LaravelIndexNow\Facades\IndexNow; IndexNow::delaySubmission('https://devechtschool.nl');
您可以通过添加自己的来覆盖已配置的默认延迟。
use LaravelFreelancerNL\LaravelIndexNow\Facades\IndexNow; IndexNow::delaySubmission('https://devechtschool.nl', 100);
何时延迟提交
在创建或更新页面后进行额外编辑是常有的事。在这些操作中,延迟提交是一个好主意。
删除页面时,您可以直接立即提交URL。
测试
composer test
变更日志
有关最近变更的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅我们的安全策略。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。