Является ли редирект 404 законным редиректом?

У меня есть ситуация, когда некоторые пользователи могут перейти на страницы с опечатками, по ссылкам и т. д. В большинстве случаев я могу определить правильную страницу, которая должна отображаться, поэтому я хочу перенаправить на правильный URL-адрес.

Подходит ли в этом случае 301 редирект. 301 означает «Перемещено навсегда», но в данном случае документа там изначально не было. Законно ли устанавливать заголовок 404 Not Found, а затем перенаправлять на правильный URL-адрес?


person DisgruntledGoat    schedule 26.10.2009    source источник


Ответы (8)


Я бы использовал 301. Перемещено навсегда уместно в том смысле, что оно сообщает, что страницы, к которой осуществляется доступ, нет и никогда не будет. Если у кого-то есть ссылка на эту страницу, они знают, что должны обновить ссылку.

person Carlos    schedule 26.10.2009
comment
Вы не знаете, что по этому конкретному URL-адресу никогда не будет страницы. - person ty812; 26.10.2009
comment
Истинный. Хотя во многих случаях вы можете сделать хорошее предположение. Я бы не так беспокоился об этом. - person Carlos; 26.10.2009
comment
Моя ситуация похожа на Stack Overflow, поскольку только часть URL-адреса фактически определяет содержимое. Следовательно, страница с опечаткой никогда не будет существовать. - person DisgruntledGoat; 26.10.2009

Остерегайтесь 301, так как это означает «навсегда», например. даже если вы будете использовать этот URL-адрес в будущем, поисковые системы могут захотеть проигнорировать его, поскольку они «знают», что контент по этому конкретному URL-адресу был перемещен «навсегда».

Используйте 303 See Other, если вам нужна переадресация, или - лучше - отобразите 404 и дружественную ошибку- сообщение, которое ссылается на предпочтительный контент.

person ty812    schedule 26.10.2009

Я думаю, что я бы предпочел привести пользователя на страницу типа «вы имели в виду». Если у вас нет предложений по контенту «вы имели в виду», дайте им настоящую страницу с ошибкой и 404. В противном случае оставьте страницы со статусом 200 и позвольте пользователю перейти по ссылке.

Я обычно использую 301 для перенаправления ранее известных и хорошо зарекомендовавших себя URL-адресов, которые по какой-то причине изменились. Причина, по которой я беспокоюсь об автоматическом подходе перенаправления, заключается в том, что недостаток в вашем алгоритме обнаружения может негативно повлиять на SEO.

person Joseph Ferris    schedule 26.10.2009

301 вполне уместно, когда вы достаточно уверены, что знаете, каким должен быть URL-адрес. Это лучшее решение как для браузеров, так и для SEO, когда вы сталкиваетесь с неработающими входящими ссылками.

Однако 3xx не подходит в качестве общего ответа о том, что страница не найдена. Есть некоторые сайты, которые всегда выдают вам 302 вместо того, чтобы возвращать 404, но это действительно плохая вещь, которая может легко сломать материал.

person bobince    schedule 26.10.2009

Я знаю, что 404 может включать заголовок перенаправления, но мне это кажется очень плохим.

person Joshua    schedule 26.10.2009

вы не можете перенаправить с документом 404. возможно, просто отобразите страницу 404 и предложите несколько правильных URL-адресов. 404 означает ошибку. Я знаю, что Google не будет рад видеть эти ссылки. :)

person TheBrain    schedule 26.10.2009
comment
На самом деле, вы можете. Заголовок состояния HTTP отличается от заголовка местоположения, поэтому вы можете заменить его заголовком 404 + новый URL. Это не значит, что это хорошая идея, о чем и был задан вопрос. - person DisgruntledGoat; 26.10.2009

Вы можете ответить только один раз на HTTP-запрос — вы не можете отправить 404, а затем отправить 301. Так что я думаю, вы застряли с 301.

person Ray    schedule 26.10.2009

Либо используйте 301 и выполните перенаправление, либо используйте 404 и отобразите сообщение типа «Я думаю, вы имеете в виду вместо этого «этот URL»; обновите свои закладки» (и не делайте перенаправление) .

person Chris J    schedule 26.10.2009