2010-10-22 2 views
1

У меня есть веб-приложение, в котором запрошенный URL-адрес используется в стиле REST. Однако, если URL-адрес не введен (только домен), я перенаправляю на http://www.example.com/home, а затем загружается мой домашний контроллер.Какой лучший код статуса HTTP для перенаправления из/в/домой?

Какой код состояния HTTP следует использовать для повторного перенаправления? Этот процесс происходит в моем сценарии index.php, используя простой вызов header('Location: home').

Уточнение: Это может быть не постоянным, но останется в этой версии приложения. Так, например, если это приложение должно быть переработано в будущем, то новый разработчик может снова выполнить запросы от корня. Я предположил бы, что это потом сужает свой выбор на:

  • 303 See Other
  • 307 Moved Temporarily
+0

Даже 'index.php' можно вызывать из разных URI-каталогов. Поэтому вы должны использовать 'header ('Location:/home')'. – Wernight

+1

@ В самом деле, заголовок 'Location' ожидает абсолютного URI (см. [RFC] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30)), поэтому он должен быть 'header ('Местоположение: http://www.example.com/home')' – Bruno

+0

@Bruno: Да, вы правы. Я просто обнаружил, что он всегда работал с относительными URL-адресами тоже. Интересно, когда абсолютный URL ** необходим **; но это другой вопрос. – Wernight

ответ

1

Я бы благоприятствовать 302 "найдено" для такого использования; который сообщает пользовательскому агенту, что они могут/должны продолжать запрашивать / в будущем, потому что когда-нибудь перенаправление может быть другим. (Но я мог бы сделать случай для 301 «Moved постоянно», тоже.)

+0

Да. Мое рассуждение состояло в том, что я не хотел нарушать его, если в будущем запросы снова могли быть возвращены из корня домена. –

+0

Если вы не отправляете заголовок Cache-Control или Expire, тогда выпуск 302 не имеет смысла. – racetrack

0

код 301. Через некоторое время 410 (Если вы хотите, запрашивающих не ссылаться устаревший URL в своем коде).