AngularJS SEO页面状态代码

我们正在使用Symfony2 + AngularJS的项目。 每个不同的域(symfony2的api.domain和Angular项目的www.domain)。

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

但问题是在服务Angular的“404页面”时:

$urlRouterProvider .otherwise('/404'); 

问题是, 我们所做的是将一个不存在的页面redirect到我们的“404页面”,这个页面带有200个标题状态代码,这对于search引擎优化很不利

由于AngularJS不能生成,我们已经尝试了两件事情:

1.使用htaccess / Apacheredirect:

  RedirectMatch 404 "/404" 

2.调用一个返回404错误的Web服务:

 <!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'); 

这一切都不适合我们…

我们也是关于使用第二个“404页面”。 这个想法是通过带有404状态代码的htaccess将我们的第一个404页面redirect到第二个404页面,但是我们认为这不会由于AngularJS内部redirect而工作:

 200 -> 301 -> 404 

PS:我发现: AngularJS html5mode和硬404表示“我们必须configuration我们的服务器为您的自定义404页面做一个路由例外”,但我们真的不知道如何做到这一点…

我们正在关注一个不好的方面吗?

还有其他的select吗?

我们如何处理?

有任何想法吗?

看来prerender.io提供了一种处理http头状态的方法

例如,对于一个404页面,我们只需要将这个元标记添加到我们的头标记中

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

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