В чем разница между Redirect()
и RedirectPermanent()
. Я прочитал несколько статей, но я не понимаю, когда мы должны использовать Redirect()
и RedirectPermanent()
. Можете ли вы показать примеры.
Redirect() vs RedirectPermanent() в ASP.NET MVC
Ответ 1
Основное различие между ними состоит в том, что RedirectPermanent
отправляет браузеру код статуса HTTP 301
(перемещенный постоянный), тогда как Redirect
отправит код состояния HTTP 302
.
Используйте RedirectPermanent
, если ресурс был перемещен навсегда и больше не будет доступен в предыдущем местоположении. Большинство браузеров кэширует этот ответ и автоматически выполняет перенаправление без повторного запроса исходного ресурса.
Используйте Redirect
, если ресурс может быть доступен в том же месте (URL) в будущем.
Пример
Скажем, что у вас есть пользователи в вашей системе. У вас также есть возможность удалить существующих пользователей. На вашем веб-сайте есть ресурс /user/{userid}
, который отображает детали данного пользователя. Если пользователь был удален, вы должны перенаправить на страницу /user/does-not-exist
. В этом случае:
Если пользователь снова будет никогда, вы должны использовать RedirectPermanent
, чтобы браузер мог перейти непосредственно к /user/does-not-exist
в последующих запросах, даже если URL указывает на /user/{userid}
.
Если пользователь может не удаляться в будущем, вы должны использовать обычный Redirect
.
Ответ 2
RedirectPermanent
- 301, а Redirect
- код состояния 302
Ответ 3
Они отправляют разные коды ответов в браузер. 301 - постоянная переадресация, 302 - временная. Конечный эффект одинаков, но если клиент хочет индексировать ссылки (наиболее распространенным клиентом, который делает это, будут поисковые системы), то постоянное перенаправление сообщает клиенту обновлять свои записи, чтобы игнорировать старую ссылку и начать использовать новую, Временное перенаправление сообщает клиенту, что страница перенаправляется на данный момент, но не удаляет старую ссылку из базы данных индексирования