AngularJS html5mode和404

时间:2014-12-17 12:37:36

标签: javascript angularjs seo http-status-code-404

我有一个AngularJS应用,html5mode设置为true

目前,该应用显示了一个软404页面,路由器中设置了.otherwise

有没有办法在使用html5mode时为了SEO而提供实际的404 HTTP响应?

3 个答案:

答案 0 :(得分:2)

如果我理解你想要什么,你必须做以下事情:

  1. 在其他路径上硬重定向浏览器(绕过角度路由),如下所示:

    $routeProvider
        .otherwise({
            controller: function () {
                window.location.replace('/404'); // your custom 404 page
                                                 // or a non existing page
            }
        });
    
  2. 如果您有一个常规的单页面应用程序,其中所有服务器请求都被重定向到相同的SPA入口点,您必须在服务器上配置为您的自定义404页面制作路由例外,这将是也应该以404状态提供服务。

  3. 否则,在没有外部请求的情况下,我无法看到如何使用历史记录API,因为角度路由的全部意义是绕过外部请求。

    如果您只想要不存在的路线返回404,那么您必须将服务器配置为匹配所有角度路线,否则返回404。

答案 1 :(得分:0)

Seach引擎使用_escaped_fragment_通过预渲染页面与SPA应用程序一起使用。您可以使用Prerender.io(或简称PhantomJS)为搜索引擎生成任何状态代码,例如https://prerender.io/documentation/best-practices

但谷歌不推荐使用此架构:http://googlewebmastercentral.blogspot.ru/2015/10/deprecating-our-ajax-crawling-scheme.html此时,Google会尝试通过常规抓取架构了解您的JS。

硬重定向到404.html页面不是一个好习惯:网址必须保持不变,例如https://stackoverflow.com/somepage

您可以尝试使用服务器呈现功能的Angular2:https://docs.google.com/document/d/1q6g9UlmEZDXgrkY88AJZ6MUrUxcnwhBGS0EXbVlYicY/edit

答案 2 :(得分:0)

您必须让您的服务器问题404。 Angular无论如何都无法帮助。