Поместит ли HTML-код страницы перенаправления 301 в документ ту же функцию, что и реальный редирект 301?

15

В веб-отладчике HTML-страница перенаправления 301 отображается как:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.website.com/webpage.htm">here</a>.</p>
</body></html>

Я должен перенаправить HTML-страницы без поддержки сервера. Если я заменю html-страницы приведенным выше кодом, будет ли это работать так же, как написание перенаправлений 301 в .htaccess на apache? Я посмотрел это в Google, но сайты, говорящие о перенаправлениях 301, не охватывали эту опцию для перенаправления html-страниц.

JMC
источник

Ответы:

18

В идеале вы отправите код статуса ответа 301 HTTP. Если вы не можете сделать это, немедленное мета-обновление также будет работать и будет считаться перенаправлением 301 или 302 в зависимости от поисковой системы .

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

Частота обновления должна быть нулевой, чтобы ее можно было считать 30-кратным перенаправлением.

Джон Конде
источник
Спасибо, эта статья действительно хорошо описывает процесс. 0 отсрочка мета-обновления в моем примере выше HTML = 301 бедняков.
JMC
10

Нет, простая замена HTML вашим примером не даст желаемого эффекта. Он просто покажет эту страницу пользователю, поскольку Apache отправит вместе с ним код состояния «200». Пользователи смогут щелкнуть ссылку, чтобы найти страницу, но это не произойдет автоматически, и пауки не будут знать, что вы хотите осуществить постоянное перенаправление ресурса.

Вам нужно будет использовать правильную директиву Redirect или _mod_rewrite_ либо в .htaccess, либо в ваших conf- файлах Apache .

В качестве альтернативы, если вы на самом деле используете PHP или что-то подобное, вы можете установить код возврата 301, вывести заголовок ответа Location и тогда ваше решение на основе страницы будет работать. В PHP это будет выглядеть примерно так:

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );
Hissohathair
источник
+1 Хорошие баллы о коде 200 статуса. Не думал об этом. К сожалению, это сервер IIS, и у меня нет доступа глубже, чем FTP. Страницы имеют формат .html, поэтому перенаправление asp не будет обрабатываться.
JMC
В этом случае ответ Джона Конде самый лучший - я забыл об эквивалентности метаобновления.
Hissohathair
3

Согласитесь с Hissohathair в том, что ваш подход не будет фактически перенаправлять. Пользователи могут знать, что нужно щелкнуть ссылку, но исходная страница по-прежнему будет возвращать обычный код состояния «200» и будет отображаться в результатах поиска (вероятно, не совсем то, что вам нужно).

Чтобы поддерживать рейтинг страницы, чрезвычайно важны 301 код состояния. Добавление мета-тегов обновления также является хорошим вариантом и может помочь в большинстве случаев (согласно ответу Джона), но вы не можете быть уверены, что поисковые системы примут его как редирект 301 в будущем. Добавление правильных перенаправлений в ваш .htaccess (или файлы Apache conf) было бы вашим лучшим вариантом, чтобы гарантировать отправку кода состояния 301.

Редактировать:

=======================

Для веб-сайта IIS7, если установлен модуль перезаписи URL IIS, вы можете создавать правила перенаправления в файле web.config для сайта. Эти правила будут применяться и к файлам .html. Больше информации здесь:

http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/

=======================

Другой альтернативой, если ваш веб-хост не имеет возможностей .htaccess / mod_rewrite, может быть изменение веб-хоста, который вы используете, где вы можете настроить перенаправления на стороне сервера. Пока сайт правильно перемещается, он должен быть достаточно плавным для ваших пользователей. Такой подход был бы применим только в крайних случаях, если поддержание рейтинга страницы крайне важно.

обкрадывать
источник