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仍然有些困惑。
我已经对SPA如何模仿或响应搜索机器人请求进行了一些研究,因此,我们开始-三种可行的解决方案。
支持链接:
元标记#1
描述:
HTTP代码404表示没有资源,或者资源已被永久删除。删除资源意味着我们要告诉GoogleBot从搜索索引中删除“死”链接。大!现在我们可以回答另一个问题-<meta name=”robots” content=”noindex”>
正如Google文档所述:
您可以通过在页面的HTML代码中包含noindex元标记或在HTTP请求中返回“ noindex”标头来阻止页面显示在Google搜索中。当Googlebot接下来抓取该页面并看到标签或标题时,无论其他网站是否链接到Googlebot,Googlebot都会从该页面中完全删除该页面。
支持链接:
元标记#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次。链接重定向会增加用户的延迟,并且并非所有浏览器都支持长重定向链。
支持链接:
JavaScript重定向
描述:
对无效的位置(不存在的文件)执行onload-redirect并window.location = '/404.html'集成Google Not Found Widget。
支持链接: