相关疑难解决方法(0)

在单页面应用中,处理错误网址的正确方法是什么(404错误)?

我目前正在使用angularjs编写一个Web应用程序,但我认为这个问题适用于在客户端进行路由的任何客户端javascript框架(如角度所做).

在单页面应用中,处理错误网址的正确方法是什么?

查看几个主要网站,如果您在https://mail.google.com/mail/下面输入任意随机网址,我会看到Gmail会重定向到收件箱.这发生在服务器端(使用http 300代码)或客户端,具体取决于错误路径是在#字符之前还是之后.另一方面,twitter显示任何无效URL的真实HTTP 404.第三种选择是显示"软"404,纯粹的客户端错误页面.

这些解决方案似乎适合不同的情况.Twitter希望Twitter用户和推文的链接是真实的链接,因此人们可以分享它们,在新闻文章中发布它们等,因此无效链接被识别是非常重要的(如果我的推文链接断开了)我的网站,一个简单的爬行会告诉我).另一方面,在gmail中,您不应该将链接分享到您的收件箱中,我甚至不确定链接是否真的是永久性/持久性的:似乎网址更新主要用于浏览器历史记录导航的目的.单页应用.给出软错误的第三种方法可能适用于类似于gmail的情况,但是没有合理的"默认"页面.

经过这么长时间的介绍,这里有一些具体的问题:

  • 提供"软"错误页面而不是404错误是否可以接受,或者如果网址无效,单页应用是否应始终重定向到真实404?
  • Gmail的代码可能完全没有错误,但如果它确实存在导致无效链接最终重定向回收件箱的错误,那么对于用户而言可能比错误页面更加混乱.对于那里的大多数网络应用程序,它们没有像gmail那样经过良好测试,显示错误页面会更好吗?
  • 要为单页面应用程序实现真正的404,似乎有必要在服务器端复制路由逻辑.有没有办法解决?
  • 当重定向到404时,我认为用户应该能够看到导致错误的URL,可能在URL栏中.使用html5历史API,我认为这可以通过简单地触发当前页面的重新加载(使用错误的URL),结合上面提到的服务器端路由来实现.对于不支持此功能或使用hashbang表示法的浏览器,这似乎不可行.支持所有浏览器的最佳方式是什么?

javascript singlepage http-status-code-404 angularjs single-page-application

50
推荐指数
2
解决办法
9347
查看次数

如何在Angular SPA中通知GoogleBot约404页?

可能重复问题在角度SPA中设置404页面的最佳方法?但我没有找到可靠的答案.
我很想知道是否有办法告诉googlebot关于404页面?有一个标签用于此目的称为prerender-status-code但是我没有找到Google Seo Team的任何官方文章来确认他们尊重这个元标记.
这足以遵循这里指定的最佳实践吗?
或者我应该做些什么?(也许与Google网站管理员工具有关?)
我对一些众所周知的SPA进行了研究,我注意到SoundCloud在其404页面上添加了一个nofollow标签,如下所示:

<meta content="noindex, nofollow" name="robots">
Run Code Online (Sandbox Code Playgroud)

googlebot是否尊重后来由js添加的元标记?

javascript seo googlebot angularjs single-page-application

11
推荐指数
1
解决办法
1075
查看次数

如何在Vue Router中获得404响应

我在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仍然有些困惑。

php .htaccess vue-router vuejs2

6
推荐指数
1
解决办法
2818
查看次数