如何在Vue Router中获得404响应

Eir*_*inn 6 php .htaccess vue-router vuejs2

我在SPA中已经有一个404处理程序,可以正常工作。这里的问题是,例如Google链接到不再存在的旧页面。当用户看到自定义的404组件时,我想Google会获得200的确定,并继续认为该页面有效。

{
  path: '*',
  name: 'not-found',
  component: NotFound // 404
}
Run Code Online (Sandbox Code Playgroud)

我让服务器重新路由到/,并让vue使用历史记录处理路由:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这是带有php后端的标准Vue CLI安装。PHP当前仅用于API调用。

在这种情况下,是否可以让服务器返回404状态代码?

建议的解决方案? 服务器对前端发生的路由一无所知,但是我可以让webpack输出一个站点地图或类似的内容(可以由服务器验证),在标头中设置404,并让其加载显示404的SPA。可以,还是有更好的解决方案?

请注意, 我最终自动创建了一个站点地图,然后根据该站点地图检查了路线。如果路由不匹配,则将其重新路由到自定义404。这工作得很好,但是Google仍然有些困惑。

And*_*mig 7

我已经对SPA如何模仿或响应搜索机器人请求进行了一些研究,因此,我们开始-三种可行的解决方案。

支持链接:

  1. 使用Vue.js和vue-router更新页面标题和元数据

元标记#1

描述:

HTTP代码404表示没有资源,或者资源已被永久删除。删除资源意味着我们要告诉GoogleBot从搜索索引中删除“死”链接。大!现在我们可以回答另一个问题-<meta name=”robots” content=”noindex”>

正如Google文档所述

您可以通过在页面的HTML代码中包含noindex元标记或在HTTP请求中返回“ noindex”标头来阻止页面显示在Google搜索中。当Googlebot接下来抓取该页面并看到标签或标题时,无论其他网站是否链接到Googlebot,Googlebot都会从该页面中完全删除该页面。

支持链接:

  1. https://searchengineland.com/meta-robots-tag-101-blocking-spiders-cached-pages-more-10665
  2. https://support.google.com/webmasters/answer/79812?hl=zh_CN
  3. https://support.google.com/webmasters/answer/93710?visit_id=636835318879056986-3786307088&rd=1

元标记#2

描述:

如果我们不能(或不想)使用我们的服务器响应404或任何其他代码,我们可以尝试执行某种重定向- seo-safe重定向(如果未启用JS)。

此重定向使用HTML meta-tag(一个示例)(立即重定向到example.com):

<meta http-equiv="refresh" content="0; url=http://example.com/">
Run Code Online (Sandbox Code Playgroud)

StackOverflow答案引用:

提醒一下,尽管这不是执行重定向的首选方法,但Google接受并跟踪具有延迟时间设置为0的Refresh标签的页面,因为在某些棘手的情况下,根本没有其他方法可以执行重定向。这是Blogger页面(由Google拥有)的推荐方法。

converted如果您将永久重定向到一个不存在的文件,则HTTP代码301最终将是404。从Google文档(准备301重定向)

尽管Googlebot和浏览器可以遵循多个重定向的“链”(例如,第1页>第2页>第3页),但我们建议重定向到最终目的地。如果无法做到这一点,请将链中的重定向次数保持在较低水平,理想情况下应不超过3次且少于5次。链接重定向会增加用户的延迟,并且并非所有浏览器都支持长重定向链。

支持链接:

  1. https://en.wikipedia.org/wiki/Meta_refresh
  2. 使用META REFRESH重定向的SEO后果
  3. http://sebastians-pamphlets.com/google-and-yahoo-treat-undelayed-meta-refresh-as-301-redirect/
  4. https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections#Permanent_redirections

JavaScript重定向

描述:

对无效的位置(不存在的文件)执行onload-redirect并window.location = '/404.html'集成Google Not Found Widget

支持链接:

  1. https://googleblog.blogspot.com/2008/10/helping-website-oweners-fix-broken.html

  • @Eirinn,你能详细说明一下哪种摆弄和哪种方法部分有效 - 第二个吗? (2认同)
  • 哦,你是对的,没有什么比偶然发现一条没有描述的“谢谢它有效”的旧线程更糟糕的了。我使用第一个,并为我的 404 页面实现了 noindex。这会导致搜索机返回 200OK 和“别管我”。#2 可能是一个更好的选择,我会在某个时候尝试一下。也许使用 Router 检查它是内部还是外部请求(是否在 spa 内部),然后执行 #1 或 #2。还不知道:) (2认同)