Php 如何在Vue路由器中获得404响应

Php 如何在Vue路由器中获得404响应,php,.htaccess,vuejs2,vue-router,Php,.htaccess,Vuejs2,Vue Router,我在水疗中心已经有一个404处理器可以工作了。这里的问题是,例如,谷歌链接到不再存在的旧页面。虽然用户会看到一个自定义的404组件,但我认为google会得到一个200 OK,并继续认为该页面是有效的 { 路径:'*', 名称:“未找到”, 组件:未找到//404 }我对SPA如何模拟或响应搜索机器人的请求进行了一些研究,现在我们来看三个可行的解决方案 支持链接: 元标记#1 说明: HTTP代码404表示没有资源或资源已被永久删除。删除资源意味着我们要告诉Google机器人从搜索索引中删除

我在水疗中心已经有一个404处理器可以工作了。这里的问题是,例如,谷歌链接到不再存在的旧页面。虽然用户会看到一个自定义的404组件,但我认为google会得到一个200 OK,并继续认为该页面是有效的

{
路径:'*',
名称:“未找到”,
组件:未找到//404

}
我对SPA如何模拟或响应搜索机器人的请求进行了一些研究,现在我们来看三个可行的解决方案

支持链接:

  • 元标记#1

    说明:

    HTTP代码404表示没有资源或资源已被永久删除。删除资源意味着我们要告诉Google机器人从搜索索引中删除“死”链接。伟大的现在我们有另一个问题可以回答-

    作为缔约国:

    您可以通过包含 页面HTML代码中的noindex元标记,或返回“noindex” HTTP请求中的标头。当Googlebot下一步爬行该页面并 看到标签或标题,谷歌机器人将完全从中删除该页面 谷歌搜索结果,不管其他网站是否链接到它

    支持链接:


  • 元标记#2

    说明:

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

    此重定向使用HTML
    meta
    -标记,例如(立即重定向到example.com):

    
    
    引自:

    作为提醒,虽然这不是执行 重定向,谷歌接受并跟踪带有刷新标签的页面 它的延迟设置为0,因为在某些棘手的情况下,根本没有延迟 执行重定向的其他方法。这是建议使用的方法 博客页面(归谷歌所有)

    如果您将永久重定向到一个不存在的文件,HTTP代码301最终将被转换为404。发件人:

    而谷歌机器人和浏览器可以遵循多个 重定向(例如,第1页>第2页>第3页),我们建议重定向到 最终目的地。如果不可能,请保留 链中的重定向较低,理想情况下不超过3个且小于5个。 链接重定向会增加用户的延迟,而不是所有浏览器的延迟 支持长重定向链

    支持链接:


  • JavaScript重定向

    说明:

    使用
    window.location='/404.html'
    执行
    onload
    -重定向到无效位置(不存在的文件)+集成

    支持链接:


  • 我认为没有解决办法。这些http代码在另一层上使用。Vuejs太晚了。唯一的方法是使用Ajax发送http get请求,然后检查状态代码,从而对其进行分类。如果404重定向或使用响应。@msphn建议的解决方案不是可行的回退方案?让PHP读取输出站点地图并验证路由-然后决定是否在标题中设置404?或者重定向到404,我想。只是有点笨重。不会的。但是你需要404代码吗?这只是一个关于SEO和搜索引擎的过时概念的问题。此外,客户不理解这些概念,并不断为搜索引擎优化和东西哭泣。我构建了用于生成vue路由的API,以便能够向某些用户代理实际显示开放图形数据。这真让人头疼。@msphn我不需要404,搜索引擎需要。另一个站点以前在同一个域上,所以它的ping路由不再存在,这很烦人。哇,在这一个上付出了很多努力-非常感谢!我不确定它是否解决了这个问题,因为它们都依赖于在页面加载后修改页面内容,并且页眉中有一个200OK。我将尝试在404页面上添加noindex元,看看会发生什么。我会给你回复:)@Eirinn,谷歌更聪明,所以200 OK并不意味着页面正常,也不需要解析额外的内容-标题等标记为答案-即使第一个解决方案不能完全解决问题,我相信只要稍加修改,我就能解决它。@Eirinn,你能详细说明一下什么样的摆弄和什么方法部分有效——第二种方法吗?哦,你是对的,没有什么比在没有描述的“thx它有效”的旧线程上绊倒更糟糕的了。我使用了第一个,并为我的404页面实现了noindex。这会导致搜索机器出现200OK和“别管我”#2可能是一个更好的选择,我将在某个时候进行试验。可能使用路由器检查它是内部请求还是外部请求(是否在spa内部),然后执行#1或#2。还不知道:)
    <meta http-equiv="refresh" content="0; url=http://example.com/">