【发布时间】:2015-05-19 19:30:20
【问题描述】:
我们正在一个使用 Symfony2 + AngularJS 的项目中工作。 每个都在不同的域中(Symfony2 的 api.domain 和 Angular 项目的 www.domain)。
现在我们专注于 SEO 部分。我们使用 Prerender.io 创建静态快照,为爬虫提供良好的 HTML Raw 页面。
但问题是在 Angular 上提供“404 页面”时:
$urlRouterProvider
.otherwise('/404');
问题是,我们所做的是将一个不存在的页面重定向到我们的“404 页面”,并带有 200 个标头状态代码,这对于 SEO 目的非常不利......
由于 AngularJS 无法生成,我们已经尝试了 2 件事:
1.通过 htaccess / Apache 使用重定向:
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 页面重定向到第二个 404 页面,但我们认为由于 AngularJS 内部重定向,这将不起作用:
200 -> 301 -> 404
PS:我发现:AngularJS html5mode and hard 404 上面写着“我们必须配置我们的服务器以使您的自定义 404 页面出现路由异常”,但我们真的不知道该怎么做...
我们是否集中注意力不集中?
还有其他选择吗?
我们该如何处理?
有什么想法吗?
【问题讨论】:
标签: angularjs apache .htaccess seo http-status-code-404