VueJS真正的SEO友好的404页搜索引擎,如谷歌/MSN



我不是VueJS程序员,但我在一家开发VueJS网站的公司工作。

网站上有文章。URL是这样的:

http://example.com/here_is_news_from_sofia.htm

但是,如果您键入:

http://example.com/here_is_news_from_blabla.htm

你应该转到404页。

我查看了几个网站和stackoverflow的问题,他们解释了你应该如何做catch-all路由器等,所以最后你得到了一个页面"404未找到";上面的文字。

但是,在ALL的情况下,发送到客户端的HTTP代码不是404,而是200。

我和我的团队一起详细阐述了这一点:

当你看任何一篇文章时,你都会得到这样的东西:

<html>
<body>
<div id="app">
<app />
</div>
<script src="/js/client.js"></script>
</body>
</html>

当然,如果你点击一个链接,这个页面就会保留下来,所有内容都是通过JS动态加载的。

然后让我们假设文章并没有找到。

VueJS将能够显示";404未找到";作为文本,但由于HTTP标头已经发送(HTML页面已经加载(,它将无法向客户端发送404代码。

出于同样的原因,VueJS无法向客户端发送301代码重定向。

VueJS可以错误地将浏览器中的URL更改为";http://example.com/404.htm"-这不是搜索引擎的正确解决方案,因为这纯粹是客户端(在浏览器中(";技巧";。

它可以做的另一个想法是执行花式重定向,如图所示,在找不到页面的Vue路由器重定向(404(:

Vue.component("page-not-found", {
template: "",
created: function() {
// Redirect outside the app using plain old javascript
window.location.href = "/404.htm";
}
}

这将使浏览器从服务器重新加载/404.htm页面,并且如果服务器(Apache/Nginx(配置正确;正确的";404代码发送给客户端。

然而,我不认为谷歌和MSN会认识到这一点http://example.com/here_is_news_from_blabla.htm是404页。

我遗漏了什么吗

  • VueJS有其他方法可以处理这种情况吗
  • VueJS网站是如何从谷歌和MSN等搜索引擎中获取索引的
  • 主题外的额外问题-VueJS能否生成包含文章的可见HTML代码

使用客户端路由,很难创建真正的404错误。幸运的是,谷歌非常善于检测软404错误(当你的应用程序显示"未找到"文本,状态为200时(。谷歌对待软404错误就像对待真正的404错误一样。唯一有帮助的是使用JavaScript将<meta name="robots" content="noindex">添加到错误页面中。

一个稍微好一点的解决方法是将web服务器配置为提供一个具有实际404状态的页面。然后,您可以让客户端路由在检测到丢失内容时将URL更改为该URL。当与服务器端渲染(SSR(结合使用时,即使是不能处理JavaScript的爬网程序,通常也会重定向到404页面。服务器端呈现是指在服务器上运行JavaScript,向不支持JavaScript的客户端和所有首页视图显示呈现的HTML的过程。请参阅Vue Vue文档中的SSR,了解如何设置。

参考:谷歌对404错误的建议在他们的爬行和索引SEO基础指南

如果这是一个单页应用程序,您可以使用vue路由器设置带有参数的动态路由匹配。并使用javascript动态更新您的元标签。我正在使用类星体vue框架,它处理所有这些SEO功能。

我将段塞数据添加到保存在数据库中的文章中,并将其用作路由参数。

https://quasar.dev/vue-composables/use-meta

https://router.vuejs.org/guide/essentials/dynamic-matching.html

您可以使用quasar vue框架,以SSR模式开发vue应用程序并将其部署到服务器上。

https://quasar.dev/quasar-cli-vite/developing-ssr/handling-404-and-500-errors

最新更新