Как бороться с перенаправлениями ссылок при переходе с классического ASP на ASP.NET? - PullRequest
3 голосов
/ 06 апреля 2009

У меня есть веб-проект большого размера, который мигрирует с классического ASP на ASP.NET (примерно во время) и хотел бы перенаправить запросы со старых адресов, например:

/ некоторые / путь / старый page.asp? Foo = бар

по новым адресам:

/ другие / путь / нового page.aspx? QAZ = Бак

В течение достаточно долгого времени будут существовать классические страницы ASP, работающие параллельно со страницами ASP.NET, с заменой отдельных страниц их версиями ASP.NET с течением времени. Где возможно, я хочу перенаправить со старых страниц на новые, чтобы пользователи не получали 404 ошибки, а также сохранить накопленный PageRank на страницах.

Мой вопрос: как бы вы применили логику перенаправления от классического ASP к новым шаблонам? Очевидное решение состоит в том, чтобы заменить old-page.asp некоторым простым VBScript, который перенаправляет на new-page.aspx, но в долгосрочной перспективе я хочу избавиться от старых файлов .asp, поэтому я хотел бы реализовать перенаправление таким образом, что они будут существовать и после того, как сайт полностью запустится в .NET.

Один из вариантов - сопоставить расширение .asp с ASP.NET и реализовать перенаправление в виде HttpHandler, но я полагаю, что невозможно заставить классический движок ASP работать после передачи запроса в ASP.NET. .

Ответы [ 2 ]

3 голосов
/ 06 апреля 2009

Пару лет назад я столкнулся с той же проблемой в одной из компаний электронной коммерции, когда мы обновили их веб-сайт до .NET. Основная проблема заключается в том, что мы понятия не имели, сколько клиентов имели старые страницы asp в своих избранных, а также вопрос SEO. Да, вы можете сопоставить расширение asp с ASP.net, но вы вообще потеряете возможность запуска файлов asp, так что для этого потребуется обновить ВСЕ страницы asp, что может оказаться невозможным.

Лучшим решением, которое я нашел в то время, было внедрение фильтра перенаправления ISAPI в IIS. Это приложение, которое запускается IIS ДО, время выполнения asp или asp.net. Он будет принимать решение на основе URL-адреса или любых других правил, которые вы хотите, разрешать ли ему запуск файлов asp, или они должны быть перенаправлены, или использовать перезапись URL для обработки запроса. Это не всегда чистая операция, так как она выполняется раньше, чем запрос вашего веб-сайта, и путаница может произойти позже, если другие разработчики не знают, что она выполняется. Поэтому, если вы идете по этому пути, убедитесь, что на вашем сайте есть много комментариев или документации, чтобы разработчики знали, что в IIS есть эта штука ...

Существует хорошее объяснение того, как реализовать это в Code Project. Иди сюда и проверь это. http://www.codeproject.com/KB/ISAPI/isapiredirector.aspx

Удачи!

1 голос
/ 08 апреля 2009

Вы должны использовать код ответа «HTTP 301 - Постоянно перемещенный», так как именно для этого он и предназначен.

http://en.wikipedia.org/wiki/HTTP_301

Фильтр перенаправления ISAPI будет работать в том смысле, что да, он будет перенаправлять посетителей на новый URL.

Однако есть три ключевые проблемы со стратегией перенаправления ISAPI.

  1. Больше кода для записи / поддержки
  2. Закладки и записи поисковых систем никогда не будут обновляться новыми и правильными URL-адресами
  3. Если файл foo.asp прозрачно перенаправлен на bar.aspx и оба проиндексированы Google, у вас будет два дублирующих URL-адреса одного и того же контента в Google. Это засоряет результаты поиска и фактически противоречит их TOS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...