stannlee / laravel-prerender
由Laravel创建的SPAs的Prerender中间件
Requires
- php: ^7.2.5
- guzzlehttp/guzzle: ^6.5
- illuminate/support: ^7.0 || ^6.16
- symfony/psr-http-message-bridge: ^2.0
This package is auto-updated.
Last update: 2024-09-20 00:38:34 UTC
README
对于Laravel 5及以下版本,请使用原始仓库
===========================
Google、Facebook、Twitter、Yahoo和Bing不断尝试查看您的网站...但他们不执行JavaScript。这就是Prerender被创建的原因。Prerender非常适合AngularJS SEO、BackboneJS SEO、EmberJS SEO以及其他任何JavaScript框架。
此中间件拦截来自爬虫对您的Laravel网站或应用的请求,然后调用(外部)Prerender服务来获取该页面的静态HTML而不是JavaScript。
安装
要求此包,运行:composer require stannlee/laravel-prerender
该包注册了其服务提供者
如果您想使用prerender.io服务,请在您的.env
文件中添加以下内容
PRERENDER_TOKEN=yoursecrettoken
如果您正在使用自托管服务,请将服务器地址添加到.env
文件中。
PRERENDER_URL=http://example.com:port
您可以通过添加以下内容到.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外,所有URL都将被预渲染。默认情况下,包括一组资产扩展名(这实际上仅在您通过路由动态提供资产时才需要)。请注意,这是完整的请求URI,因此包括起始斜杠和查询参数字符串。
// prerender.php: 'blacklist' => [ '/api/*' // do not prerender pages starting with '/api/' ],