Как получить 404 ответ в Vue Router - PullRequest
0 голосов
/ 16 января 2019

У меня уже есть обработчик 404 в SPA, который работает. Проблема здесь в том, что Google, например, ссылается на старые страницы, которые больше не существуют. В то время как пользователь увидит пользовательский компонент 404, Google, я полагаю, получит 200 OK и продолжит думать, что страница действительна.

{
  path: '*',
  name: 'not-found',
  component: NotFound // 404
}

У меня есть сервер, перенаправляющий на / и позволяющий vue обработать маршрутизацию с использованием History:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

Это стандартная установка Vue CLI с бэкэндом php. В настоящее время PHP используется только для вызовов API.

Есть ли способ заставить сервер вернуть код состояния 404 в этом сценарии?

Предлагаемое решение? Сервер ничего не знает о маршрутизации, происходящей во внешнем интерфейсе, но я мог бы сделать так, чтобы веб-пакет выводил карту сайта или что-то подобное, что может быть проверено сервером, установил 404 в заголовке и позволил ему загрузить SPA, который показывает 404. Будет ли это быть в порядке или есть лучшее решение?

1 Ответ

0 голосов
/ 20 января 2019

Я провел некоторое исследование о том, как SPA может имитировать или отвечать на запросы поисковых роботов, так что здесь мы - три рабочих решения.

Вспомогательные ссылки:

  1. Обновление заголовка страницы и метаданных с помощью Vue.js и vue-router

метатег # 1

Описание:

Код HTTP 404 означает, что ресурса нет или он был удален навсегда. Удаленный ресурс означает, что мы хотим сказать GoogleBot удалить «мертвую» ссылку из поискового индекса. Большой! Теперь у нас есть еще один вопрос, на который можно ответить - <meta name=”robots” content=”noindex”>

Как Документы Google Состояние:

Вы можете запретить отображение страницы в Поиске Google, включив метатег noindex в HTML-коде страницы или возвращая noindex заголовок в запросе HTTP. Когда следующий робот Googlebot сканирует эту страницу и увидеть тег или заголовок, робот Googlebot будет отбрасывать эту страницу полностью из Результаты поиска Google, независимо от того, ссылаются ли на него другие сайты.

Вспомогательные ссылки:

  1. https://searchengineland.com/meta-robots-tag-101-blocking-spiders-cached-pages-more-10665
  2. https://support.google.com/webmasters/answer/79812?hl=en
  3. https://support.google.com/webmasters/answer/93710?visit_id=636835318879056986-3786307088&rd=1

Метатег # 2

Описание:

Если мы не можем (или не хотим) использовать наш сервер для ответа 404 или любым другим кодом, мы можем попытаться выполнить какое-либо перенаправление - seo-safe перенаправление (если не включен JS).

В этом перенаправлении используется тег HTML meta, например (немедленно перенаправляется на example.com):

<meta http-equiv="refresh" content="0; url=http://example.com/">

Цитата из StackOverflow ответ :

Как напоминание, и хотя это не предпочтительный способ выполнить перенаправить, Google принимает и отслеживает страницы, имеющие тег Refresh с его задержка установлена ​​на 0, потому что в некоторых сложных случаях просто нет Другой способ выполнить перенаправление. Это рекомендуемый метод для Страницы Blogger (принадлежащие Google).

HTTP-код 301 в конечном итоге будет converted до 404, если вы будете перенаправлять файл, который не существует, навсегда. От Документы Google (подготовка к переадресации 301) :

Хотя Googlebot и браузеры могут следовать по «цепочке» из нескольких перенаправления (например, Страница 1> Страница 2> Страница 3), мы рекомендуем перенаправить на пункт назначения. Если это невозможно, оставьте количество перенаправления в цепочке низкие, в идеале не более 3 и менее 5. Цепочка перенаправлений добавляет задержку для пользователей, а не для всех браузеров поддержка длинных цепочек перенаправления.

Вспомогательные ссылки:

  1. https://en.wikipedia.org/wiki/Meta_refresh
  2. SEO последствия перенаправления с META REFRESH
  3. http://sebastians -pamphlets.com / Google-и-Yahoo лечи-без задержки-мета-обновления-а-301-редиректа /
  4. https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections#Permanent_redirections

JavaScript Redirect

Описание:

Выполнить onload -обращение с window.location = '/404.html' в неверное местоположение (файл, который не существует) + интегрировать Google Not Found Widget .

Вспомогательные ссылки:

  1. https://googleblog.blogspot.com/2008/10/helping-website-oweners-fix-broken.html
...