Vue 实现 Open Graph 分享预览

什么是 Open Graph Protocol?,可以去看这篇文章

Open Graph Protocol

像vue的插件,例如vue-head,vue-meta这些可以动态的添加meta标签到head头中,但是我在尝试之后,并没有什么作用,原因是我们在拷贝链接到国外的一些社交软件时,例如Facebook,Twitter等,这时候是没法执行js的。

解决方案:我们的想法是通过服务端渲染,但是我们想的呢是通过配置nginx来访问php文件,通过php来获取动态的信息,例如标题,图片等信息,然后读取我们打包的单页面的html文件,通过拼接字符串,来生成OG标签,然后再输出html文件的内容出去。

网站根目录结构如下:
在这里插入图片描述

演示代码如下:

//nginx的主要配置
location / {
        root /home/www/suyuanAPI/public/suyaunWeb;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }
        location ~ \.php$ {
         root           html;
         fastcgi_pass   127.0.0.1:9000;
         fastcgi_read_timeout 500;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME /home/www/suyuanAPI/public/suyaunWeb$fastcgi_script_name;
         include        fastcgi_params;
     }
<?php 
    $file_path = "./index.html";
    $head = '<head>';
    if(file_exists($file_path)){
        $fp = fopen($file_path,"r");
        $str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
        if($_SERVER['QUERY_STRING'] == 'name=home'){
            $new_head = $head . '<meta property=og:title content="这是首页">';
            $str = str_replace($head, $new_head, $str);
        } else {
            $new_head = $head . '<meta property=og:title content="这是个人">';
            $str = str_replace($head, $new_head, $str);
        }
        echo $str;
        fclose($fp);
    }
?>

代码解析,代码写的比较简陋,主要就是读取文件,然后获取到链接上的参数,替换字符,再拼接字符和对应的OG标签,根据参数的不同生成不同的OG标签,最后输出html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值