ASP.NET 404 (страница не найдена) перенаправление с сохранением оригинальных параметров - PullRequest
2 голосов
/ 02 февраля 2009

Я заменяю старое веб-приложение новым, с другой структурой.

Я не могу изменить путь виртуального каталога для нового приложения, поскольку у меня есть пользователи, которые добавили в закладки разные ссылки на старое приложение.

Допустим, у меня есть пользователь, у которого есть эта закладка:

http://server/webapp/oldpage.aspx?data=somedata

Мое новое приложение будет находиться в том же виртуальном каталоге, заменив старое, но у него больше нет oldpage.aspx, вместо этого у него другое расположение, но ему все еще нужен параметр из старого URL.

Итак, я установил перенаправление ошибок 404 в redirectfrombookmark.aspx, где я решаю, как обрабатывать запрос.

Проблема в том, что единственный параметр, который я получаю, это "aspxerrorpath = / webapp / oldpage.aspx", но не параметр "data", и он мне нужен для правильной обработки запроса.

Есть идеи, как получить полный "оригинальный" URL в обработчике 404?

РЕДАКТИРОВАТЬ: читая ответы, похоже, я не достаточно ясно понял вопрос:

  1. Пользователи отметили много разных страниц (oldpage1, oldpage2 и т. Д.), И я должен обрабатывать их одинаково.
  2. Параметры для каждой старой страницы почти одинаковы, и мне нужны только конкретные.
  3. Я хочу повторно использовать «старое» имя виртуального каталога для «нового» приложения.
  4. Поисковые роботы и т. Д. Не представляют проблемы, это внутреннее приложение с динамическим контентом, срок действия которого истекает очень часто.

Вопрос в том, могу ли я сделать это без создания пачки пустых страниц в моем «новом» приложении со старыми именами и Request.Redirect в их OnLoad. То есть это можно сделать с помощью механизма 404 или некоторой обработки событий в Global.asax и т. д.

Ответы [ 4 ]

5 голосов
/ 02 февраля 2009

Для целей SEO вы должны никогда перенаправлять на ошибку 404. 404 должен быть тупиком, с некоторой полезной информацией о том, как найти страницу, которую вы ищете, такую ​​как карта сайта.

Вы должны использовать 301, перемещенные навсегда . Это позволяет поисковым роботам обновлять свой индекс без потери рейтинга страницы, назначенного исходной странице,

См. http://www.webconfs.com/how-to-redirect-a-webpage.php о том, как кодировать этот тип ответа.

2 голосов
/ 02 февраля 2009

Вы можете посмотреть на UrlRewritingNet компонент.

1 голос
/ 02 февраля 2009

Вам также следует изучить использование некоторых событий в файле Global.ascx (? Extention) для проверки на наличие ошибок и интеллектуального перенаправления. Событие OnError - это то, с чем вы хотите работать. В этот момент у вас будут переменные из запроса (в объекте HttpContext), и вы сможете использовать свой код вместо 404. Если вы идете по этому пути, убедитесь, что вы правильно перенаправили 404 для чего-либо, кроме oldpage .aspx.

Извините, у меня сейчас нет конкретных примеров или информации, надеюсь, это укажет вам правильное направление.

0 голосов
/ 02 февраля 2009

Параметры POST и GET доступны только для запроса. Если вы уже знаете имя старой страницы (OldPage.aspx), почему бы просто не добавить туда пользовательский редирект?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...