我们正在使用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>
有什么想法吗?
答案 0 :(得分:3)
似乎 prerender.io 提供了一种处理 http标头状态的方法。
例如,对于 404页面,我们只需要将此元标记添加到我们的标题中:
<meta name="prerender-status-code" content="404">