Переназначение и перенаправление URL ASP.NET - необходима лучшая практика - PullRequest
2 голосов
/ 30 июля 2010

Это сценарий: у меня есть список из около 5000 URL-адресов, которые уже были опубликованы для различных клиентов.Теперь расположение всех этих URL-адресов изменилось на моей стороне сервера.Сервер все тот же, хотя.Это веб-сайт ASP.NET с .NET3.5 / C #.

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

Я пытаюсь понять смыслВесь сценарий:

  1. Где бы я поместил фактическое сопоставление старого URL-адреса в новый URL-адрес - в базе данных или в некоторой конфигурации.файл или есть лучший вариант?

  2. Как мне на самом деле реализовать перенаправление:
    Должен ли я написать метод с помощью Server.Transfer или Response.Redirect?
    Иесть лучшая практика, например: размещение фактической переадресации в HTTPModules.снижение производительности, если есть.

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Если ваше приложение уже использует базу данных, я бы использовал это. Сделайте старый URL первичным ключом, и поиск должен быть очень быстрым. Я бы лично обернул все это в классы .NET, которые абстрагируют его и позволят вам создать Dictionary<string,string> всех URL, которые можно загружать в память из БД и кэшировать. Это будет еще быстрее.

Определенно НЕ используйте Server.Transfer. Вместо этого вы должны сделать перенаправление 301 Permanently Moved . Это позволит поисковым системам знать , чтобы использовать новый URL. Если вы используете NET 4.0, вы можете использовать метод HttpResponse.RedirectPermanent . Однако в более ранних версиях вы должны устанавливать заголовки самостоятельно - но это тривиально .

0 голосов
/ 30 июля 2010

Вы определенно хотите использовать HTTPModules. Это общепринятая практика, и, недавно попробовав сделать это в Global.asax, я могу вам сказать, что если вы не хотите делать только самые простые вещи (например, "~/mypage.aspx/3" <-> "~/mypage.aspx?param1=3), это намного сложнее и ошибочнее, чем кажется.

На самом деле, я сожалею даже о том, что пытался создать собственное решение для перезаписи URL. Это просто не стоит, если вы хотите что-то, от чего вы можете зависеть. У Скотта Гатри есть очень хороший пост в блоге на эту тему , и он рекомендует UrlRewriter.net или UrlRewriting.net как пару бесплатных URL-адресов с открытым исходным кодом. переписывание решений.

Удачи.

0 голосов
/ 30 июля 2010

Храните данные в базе данных, но загружайте в кэш ASP.NET, чтобы сократить время доступа.

...