PHP如何实现服务端渲染,解决Vue单页应用动态SEO参数硬伤

svr

Git 地址

gitee.com/h6play/svr

介绍

我们常用Vue开发单页应用,如果开发的是官网呢?没法动态的加入SEO参数,能让爬虫抓取的信息,所以为了适应使用PHP脚本开发了一个服务端渲染SEO信息的程序,方便快速部署使用。

软件架构

  • 如果网站访问目录是 public

/<网站目录>/                  # 网站目录

/<网站目录>/public/           # 网站访问目录 例如Laravel网站运行目录是在 public 下

/<网站目录>/public/svr.php    # 渲染程序放这
  • 如果网站访问目录是 /

/<网站目录>/           # 网站访问目录

/<网站目录>/svr.php    # 渲染程序放这

安装教程

  1. 放置 svr.php 到网站访问目录

  2. 设置 Nginx 默认文件为 svr.php

  3. 设置 Nginx 单页应用伪静态


try_files $uri $uri/ /svr.php;
  1. 配置 svr.php 文件参数

define("CloudUrl", "http://blog.h6play.cn/index.php/api/Manage.Test.Svr"); # 获取页面SEO参数接口

define("CloudKey", "2kjk23lao1pu2341ou2o1hpo32p3"); # 访问Key

define("CacheMinute", 60); # 缓存时间 单位:60秒

define("DefaultPage", "index.html"); # 默认页面

define("APP_DEBUG", false); # 调试模式 false=缓存页面 true=不缓存页面

/*

 * 默认SEO信息

 */

$seo = [

    "title" => date("H:i:s"),    # 页面标题

    "icon" => "favicon.ico",     # 页面图标

    "keywords" => "页面关键词",   # 页面关键词

    "description" => "页面描述",  # 页面描述

    "script" => "",              # 页面脚本

];
  1. 配置的接口请求参数是 POST

{

    "url": "http://www.baidu.com/page/1",   // 当前页面访问URL

    "key": "2kjk23lao1pu2341ou2o1hpo32p3",  // 通讯秘钥

}
  1. 配置的接口需要返回参数是

{

    "title": "13:49:50_服务端",

    "icon": "http://farm.test.farmkd.com/uploads/0/png/20201015/2eeceb51ff1996f4d1578dbee355cb42.png",

    "keywords": "这是页面关键词",

    "description": "这是页面描述",

    "script": ""

}

命令行

  1. php svr.php list 显示所有域名缓存页面文件数量和大小
  2. php svr.php clean domain <域名> 删除指定域名下缓存
  3. php svr.php clean old 删除过期缓存
  4. php svr.php clean all 删除所有缓存

参与贡献

  1. h6play@163.com
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3
cnguu

实际有使用前后的对比数据吗?

1个月前 评论
h6play (楼主) 1个月前

现在蜘蛛已经很智能了,单页面完全可以爬取!

1个月前 评论
h6play (楼主) 1个月前

用 SSR 的 Nuxt 不是更好,SPA 的访问速度 + 服务器端渲染的 SEO

1个月前 评论
h6play (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!