a70537952/laravel-prerender

此包已被弃用且不再维护。作者建议使用nutsweb/laravel-prerender包。

Laravel 中间件,用于在 SEO 中即时渲染由 JavaScript 渲染的页面

2.0.3 2018-11-28 13:16 UTC

This package is not auto-updated.

Last update: 2019-09-24 12:17:27 UTC


README

对于 Laravel 4,请使用1.0 分支

Laravel Prerender Build Status

Google、Facebook、Twitter、Yahoo 和 Bing 不断尝试查看您的网站...但他们不会执行 JavaScript。这就是 Prerender 被构建的原因。Prerender 对 AngularJS SEO、BackboneJS SEO、EmberJS SEO 以及任何其他 JavaScript 框架都完美适用。

此中间件拦截来自爬虫对您的 Laravel 网站或应用的请求,然后调用(外部)Prerender 服务以获取该页面的静态 HTML,而不是 JavaScript。

Prerender 遵循谷歌的 _escaped_fragment_ 建议,我们建议您使用。这很简单

  • 只需在所有页面的 <head> 中添加 <meta name="fragment" content="!">
  • 如果您使用哈希 URL(#),则将其更改为哈希感叹号(#!),但您也可以使用 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

这可能对您的本地开发环境很有用。

工作原理

  1. 中间件检查我们是否应该显示一个预渲染页面
    1. 中间件检查请求是否来自爬虫(_escaped_fragment_ 或代理字符串)
    2. 中间件检查我们是否请求一个资源(js、css 等...)
    3. (可选) 中间件检查 URL 是否在白名单中
    4. (可选) 中间件检查 URL 是否不在黑名单中
  2. 中间件向 prerender 服务(phantomjs 服务器)发出 GET 请求以获取页面的预渲染 HTML
  3. 将 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/'
],

贡献

我喜欢任何贡献!请随意创建问题或拉取请求。

许可协议

MIT许可协议(MIT)

版权所有(c)2014 Jeroen Noten

在此特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向获得软件的人提供使用软件的权利,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中,是否因软件或其使用或其他方式而产生、产生于或与软件相关。