gpt4 book ai didi

laravel - 如何使动态元数据更改 Vue 中 SEO 的实际页面源

转载 作者:行者123 更新时间:2023-12-04 16:32:04 24 4
gpt4 key购买 nike

我目前正在通过 Vue 路由器更改页面标题和(在不久的将来)元数据,如下所示:

$route (to, from){
document.title = to.meta.title
}
当我检查标题时,这很好用:
    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Updated Page Title</title>
<link href=" /css/app.css?id=b21c63ebd0cb0655a4d8" rel="stylesheet">
</head>
但是,当我查看页面源代码时,它会显示旧信息:
    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
*** <title>Old Page Title</title> ***
<link href=" /css/app.css?id=b21c63ebd0cb0655a4d8" rel="stylesheet">
</head>
出于 SEO 的目的,我需要标题和元信息都是动态的。我的问题有两个:
  • 使用 vue-meta 插件会解决原始来源的页面标题问题吗?
  • 我是否必须使用诸如 SSR 或预渲染之类的东西来获取动态元信息,或者他们是否有任何其他类似于这种方法的路线来做到这一点?
  • 最佳答案

  • vue-meta仅在执行 JavaScript 并呈现页面时应用。所以,不,当您查看页面源代码时,您不会看到这些元标记。
  • 你需要 SSR 还是预渲染?也许。这取决于您想要实现的目标。如果在网络爬虫支持 JS 之前拥有出色的 SEO 对您的网站至关重要?好的。

  • 当然,您仍然可以在后端添加一些元标记。根据您使用的语言/框架,有很多选项可以帮助实现这一目标。例如,对于 Laravel,您可以查看 this包出来。
    此问题的另一个解决方法是将您的请求分类为来自前端的请求和来自爬虫的请求。例如,您可以通过检查请求中的用户代理来实现,然后您可以相应地调整爬虫的响应(例如,将元标记注入(inject) header )。

    这是我建议的解决方法的示例:
    IndexController.php
    <?php

    declare(strict_types=1);

    namespace App\Http\Controllers;

    use Butschster\Head\Facades\Meta;
    use Butschster\Head\Packages\Entities\OpenGraphPackage;

    class IndexController extends Controller
    {
    const CRAWLERS = [
    'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
    'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html)',
    'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.36',
    'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
    'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b',
    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)',
    'Googlebot-Image/1.0',
    'Mediapartners-Google',
    'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)',
    'facebookexternalhit/1.1',
    'Twitterbot/1.0',
    'TelegramBot (like TwitterBot)',
    ];

    public function index()
    {
    if ($this->isACrawler()) {
    $this->applyMetaTags();

    return view('layouts.crawler');
    }

    return view('layouts.index');
    }

    public function isACrawler()
    {
    if (in_array(request()->userAgent(), self::CRAWLERS)) {
    return true;
    }

    return false;
    }

    private function applyMetaTags()
    {
    $title = 'Something';
    $description = 'Something else';

    Meta::prependTitle($title)
    ->addMeta('description', ['content' => $description]);

    $og = new OpenGraphPackage('some_name');

    $og->setType('Website')
    ->setSiteName('Your website')
    ->setTitle($title)
    ->setUrl(request()->fullUrl())
    ->setDescription($description);

    Meta::registerPackage($og);
    }
    }
    布局/crawler.blade.php
    <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
    @meta_tags

    <link rel="shortcut icon" href="{{ asset('favicon.ico') }}">
    </head>
    </html>
    如您所见,我正在创建一个爬虫列表,然后检查请求以查看它是否来自爬虫,如果为真,则应用 metatags并返回我为此目的创建的特定布局。
    注意事项:
  • 这不会将元标记应用于您的正常请求。
  • 您需要找到一种过滤请求 URL 并动态应用标签的方法。例如使用正则表达式。
  • 关于laravel - 如何使动态元数据更改 Vue 中 SEO 的实际页面源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65150707/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com