Замена URL с помощью ASP.NET для поисковой оптимизации
ОГЛАВЛЕНИЕ
Замена URL – процесс скрытия сложного URL с параметризованной строкой запроса, путем использования серий единообразных, часто словесных URL, не содержащих параметров строки запроса.
• Скачать демо обработчика ".html" (требует IIS) - 6.03 Кб
• Скачать демо обработчика ".ashx" (не требует IIS) - 6.12 Кб
Введение
Идея в том, что единообразный URL запрашивается с сервера, и внутри определяются требуемые параметры, затем вызывается оригинальный URL со строкой запроса.
Чаще всего это делается ради SEO (Search Engine Optimisation - поисковая оптимизация). Поисковики обычно не любят параметры строки запроса у веб-страниц, так как они означают динамически меняющуюся страницу, которую труднее индексировать, потому что одна и та же страница часто встречается, содержит запутанные бесполезные данные и не считается удобной для клиента. В статье рассказано именно о замене на единообразные ресурсы страниц HTML в скриптах ASPX с запросами.
Первая проблема заключается в том, что по умолчанию IIS сам обрабатывает все запросы к ресурсам *.htm и *.html и отвечает ошибкой “404 Страница не найдена”, если такой запрос не существует. Чтобы заменить страницы *.html, надо приказать IIS перенаправлять ASP.NET все запросы к этим ресурсам и не обрабатывать их самому. Можно маршрутизировать *.html через ASP.NET и не трогать *.htm, а можно маршрутизировать любые ресурсы, перенаправляя ASP.NET все запросы. Это можно сделать в IIS6, перейдя в свойства веб-сайта, нажав кнопку “Конфигурация” на вкладке “Домашний каталог” (или на вкладке “Виртуальный каталог” для виртуальной папки приложения) и добавив привязку для расширений, которые надо перенаправлять расширению ASP.NET ISAPI. Он обычно расположен в C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, но всегда можно найти и скопировать свойства для привязки *.aspx в случае сомнения. Также обязательно снимите выделение с опции проверки существования запрошенного ресурса.
Как только запрос дойдет до ASP.NET, выполняется замена URL с помощью метода HttpContext.RewritePath. Этот метод меняет информацию исходного запроса, переданного из IIS, на другой URL. Замену можно производить в различных местах, в том числе в обработчике приложения global.asax, в модуле HTTP или в обработчике HTTP.
В отличие от других статей, больше описывающих процесс преобразования удобных URL в серверные URL с помощью файла конфигурации и регулярных выражений, эта статья излагает основы, требуемые для построения надежной системы замены URL в ASP.NET с помощью различных подходов. Был реализован простой метод-заглушка для модуля и обработчика HTTP, расширяемые в соответствии с диктуемыми требованиями.