Я должен использовать код перенаправления http 302 или 307?

Предположим, что у меня есть страница на моем веб-сайте для показа пресс-релизов в течение текущего месяца
http://www.mysite.com/mediareleases.aspx

И по причинам, в которые это является приземленным для входа*, эта страница MUST быть данным строку запроса с текущим днем месяца для создания этого списка:
http://www.mysite.com/mediareleases.aspx?prevDays=18

Как таковой я должен перенаправить клиентский запрос http://www.mysite.com/mediareleases.aspx кому: http://www.mysite.com/mediareleases.aspx?prevDays=whateverDayOfTheMonthItIs

Мой вопрос, если я хочу, чтобы Google индексировал страницу без параметра запроса, я должен использовать код состояния 302 или 307 для выполнения перенаправления?

Оба указывают, что страница "временно" переместилась - который является тем, что я хочу, потому что страница "перемещается" каждый день, если Вы получаете мое значение.

[*] я использую функцию.NET с закрытым исходным кодом CMS, таким образом, мои руки связываются.

11
задан Iain Fraser 18 March 2010 в 06:05
поделиться

2 ответа

Документация Google , похоже, указывает, что и 302, и 307 обрабатываются одинаково, и что «робот Googlebot продолжит сканирование и индексирование исходного местоположения».

Но перед лицом двусмысленности вы могли бы также покопаться в RFC и попытаться сделать все правильно, с наивной надеждой, что поисковые роботы сделают то же самое. В этом случае RFC 2616 § 10.3 содержит почти идентичные определения для каждого кода ответа, за одним исключением:

302: Поскольку перенаправление может время от времени изменяться, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов.

307: Поскольку перенаправление МОЖЕТ время от времени изменяться, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов.

Это не кажется мне значительным различием. Я считаю, что 302 инструктирует клиентов, что веб-мастера ненадежны, а 307 явно сообщает веб-мастерам, что клиенты им не доверяют, поэтому они могут свободно изменять перенаправление.

Я думаю, что наиболее показательным моментом является примечание в определении 302:

Примечание: RFC 1945 и RFC 2068 указывают, что клиенту не разрешено изменять метод в перенаправленном запросе. Однако большинство существующих реализаций пользовательского агента обрабатывают 302, как если бы это был ответ 303, выполняя GET для значения поля Location независимо от исходного метода запроса.Коды состояния 303 и 307 были добавлены для серверов, которые хотят однозначно указать, какой тип реакции ожидается от клиента.

Что, на мой взгляд, означает, что 302 и 307 в значительной степени эквивалентны, но клиенты HTTP / 1.0 не смогли правильно реализовать 302 с первого раза.

18
ответ дан 3 December 2019 в 02:10
поделиться

Я чувствую вашу боль. Что касается решения, сложно сказать, что будут делать поисковые системы. Кажется, что у каждого свой способ обработки переадресации. Эта ссылка предполагает, что 302 проиндексирует содержимое перенаправленной страницы, но по-прежнему будет использовать ссылку на главную страницу, но неясно, что будет делать 307.

Другой способ, которым вы можете продолжить, - это перенаправление javascript и тег

В любом случае я бы по-прежнему выполнял чисто серверный запрос, если это вообще возможно. Черт возьми, если ваш ожидаемый трафик невелик, вы можете рассматривать свою домашнюю страницу как прокси в случае, если нет строки запроса. Попросите его использовать фоновый поток, чтобы запросить себя со строкой запроса и передать результаты. : -)

edit только что увидел, что вы используете .NET. Возможно, рассмотрите этот ответ от SO: C # Могу ли я изменить переменные Request.Form? .

0
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: