2015-03-17 3 views
2

Мы работаем над проектом, который использует Symfony2 + AngularJS. Каждый из них находится в другом домене (api.domain для Symfony2 и www.domain для проекта Angular).AngularJS SEO Page 404 Код состояния заголовка

Теперь мы фокусируемся на части SEO. Мы используем Prerender.io для создания статических снимков, чтобы служить хорошей странице HTML Raw для сканеров.

Но проблема в том, когда служение «404 страница» на Угловое:

$urlRouterProvider 
        .otherwise('/404'); 

Дело в том, , что мы делаем перенаправляет несуществующую страницу нашей «404 страницы» с 200 заголовка Статус Кодекса в , что очень плохо для целей SEO ...

Поскольку AngularJS не способен генерировать, мы уже пытались 2 вещи:

1. Используйте переназначения с Htaccess/Apach е:

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

Ничего из этого не работал для нас ...

Мы также рекомендуем использовать вторую страницу «404». Идея была перенаправлять нашу первую страницу 404 на вторую 404 страницы с помощью Htaccess с кодом 404 статуса, но мы считаем, что не будет работать из-за AngularJS внутреннего перенаправления:

200 -> 301 -> 404 

PS: я нашел: AngularJS html5mode and hard 404, который говорит " мы должны настроить наш сервер на создание исключения маршрутизации для вашей пользовательской страницы 404 », но мы действительно не знаем, как это сделать ...

Мы фокусируемся плохо?

Есть другой вариант?

Как мы можем справиться с этим?

Любые идеи?

ответ

3

Кажется, что prerender.io предлагает способ обработки статуса заголовка HTTP.

Например, для 404 страницы нам просто нужно добавить этот мета-тег в нашу голову тег:

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

Docs: https://prerender.io/documentation/best-practices

+3

Но prerender.io не свободен. Без использования prerender.io, как я могу решить эту проблему? Спасибо вам. –

Смежные вопросы