kelix06 / laravel-prerender
Laravel 中间件,用于实时渲染 JavaScript 渲染的页面以提高 SEO
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ^6.0
- illuminate/support: ~5.0.14|~5.1
- symfony/psr-http-message-bridge: ^1.0
This package is not auto-updated.
Last update: 2024-10-02 17:11:44 UTC
README
对于 Laravel 4,请使用 1.0 分支
Laravel Prerender 
Google、Facebook、Twitter、Yahoo 和 Bing 不断尝试查看您的网站...但他们不执行 JavaScript。这就是 Prerender 被创建的原因。Prerender 完美适用于 AngularJS SEO、BackboneJS SEO、EmberJS SEO 以及任何其他 JavaScript 框架。
此中间件拦截来自爬虫对您的 Laravel 网站或应用的请求,然后调用(外部)Prerender 服务获取该页面的静态 HTML 而不是 JavaScript。
Prerender 遵循 Google 的 _escaped_fragment_
建议方案,我们建议您使用。这很简单
- 只需将
<meta name="fragment" content="!">
添加到所有页面的<head>
中 - 如果您使用哈希 URL(#),请将其更改为 hash-bang(#!),但您也可以使用 HTML5 的 push-state
- 这就对了!JavaScript 页面完美的 SEO。
安装
要安装此包,请运行: composer require nutsweb/laravel-prerender
安装后,将 ServiceProvider 添加到 config/app.php
中的 providers 数组。
'Nutsweb\LaravelPrerender\LaravelPrerenderServiceProvider',
如果您想使用 prerender.io 服务,请将以下内容添加到您的 .env
文件中
PRERENDER_TOKEN=yoursecrettoken
如果您正在使用自托管服务,请将服务器地址添加到 .env
文件中。
PRERENDER_URL=http://example.com
您可以通过将以下内容添加到您的 .env
文件中来禁用此服务
PRERENDER_ENABLE=false
这可能对您的本地开发环境很有用。
工作原理
- 中间件检查我们是否应该显示一个预渲染的页面
- 中间件检查请求是否来自爬虫(
_escaped_fragment_
或代理字符串) - 中间件检查我们是否请求资源(js、css 等...)
- (可选)中间件检查 URL 是否在白名单中
- (可选)中间件检查 URL 是否不在黑名单中
- 中间件检查请求是否来自爬虫(
- 中间件向 prerender 服务(phantomjs 服务器)发送
GET
请求以获取页面的预渲染 HTML - 将 HTML 返回给爬虫
自定义
要自定义白名单和黑名单,您首先必须发布配置文件
$ php artisan vendor:publish
白名单
白名单路径或模式。您可以使用通配符语法。如果提供了白名单,则仅包含白名单路径的 URL 将被预渲染。空数组表示所有 URI 都将通过此过滤器。请注意,这是完整的请求 URI,包括起始斜杠和查询参数字符串。
// prerender.php: 'whitelist' => [ '/frontend/*' // only prerender pages starting with '/frontend/' ],
黑名单
排除路径的黑名单。您可以使用通配符语法。如果提供了黑名单,则所有 URL 都将预渲染,除非包含黑名单路径。默认情况下,包含一组资产扩展名(这实际上仅在您通过路由动态提供资产时才需要)。请注意,这是完整的请求 URI,包括起始斜杠和查询参数字符串。
// prerender.php: 'blacklist' => [ '/api/*' // do not prerender pages starting with '/api/' ],
贡献
我喜欢任何贡献!请随意创建问题或拉取请求。
许可
MIT 许可证 (MIT)
版权所有(c)2014 Jeroen Noten
特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费权限,在不作限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许将软件提供给他人以执行上述操作,但需遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权或其他情况下,均与软件、使用或软件的其他操作有关。