AngularJS SEO页面404标题状态代码

时间:2015-03-17 11:29:15

标签: angularjs apache .htaccess seo http-status-code-404

我们正在使用Symfony2 + AngularJS的项目。 每个域都在不同的域中(apm.domain用于Symfony2,www.domain用于Angular项目)。

现在我们专注于SEO部分。我们使用Prerender.io创建静态快照,以便为抓取工具提供良好的HTML Raw页面。

但问题是服务于" 404 Page"关于Angular:

$urlRouterProvider
                  .otherwise('/404');

问题是,我们所做的是将不存在的页面重定向到我们的" 404 Page"使用200 Header状态代码,这对于SEO目的非常糟糕......

由于AngularJS无法生成,我们已经尝试了两件事:

1。使用htaccess / Apache重定向:

 RedirectMatch 404 "/404"

2。请致电给我们返回404错误的网络服务:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
  <head>
    <title>404 Not Found</title>
  </head>
  <body>
    <h1>Not Found</h1>
    <p>The requested URL /do-not-access was not found on this server.</p>
  </body>
</html>

对于AngularJS方面,我们试图抛出标题状态代码但没有成功:

return $http.get(ENV.apiEndpoint + '/do-not-access');

这些都不适合我们......

我们还要使用第二个&#34; 404 Page&#34;。这个想法是通过带有404状态代码的htaccess将我们的第一个404页面重定向到第二个404页面,但我们认为由于AngularJS内部重定向而无法工作:

200 -> 301 -> 404

PS:我发现:AngularJS html5mode and hard 404表示&#34;我们必须配置我们的服务器为您的自定义404页面制作路由例外&#34;但我们真的不知道怎么做......

我们是否专注于一种糟糕的方式?

还有其他选择吗?

我们如何处理它?<​​/ p>

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

似乎 prerender.io 提供了一种处理 http标头状态的方法。

例如,对于 404页面,我们只需要将此元标记添加到我们的标题中:

<meta name="prerender-status-code" content="404">

文档:https://prerender.io/documentation/best-practices