Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Обзор инструментов SEO-оптимизатора и методов продвижения" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Ноябрь 2007 → | ||||||
2
|
3
|
4
|
||||
---|---|---|---|---|---|---|
5
|
6
|
7
|
9
|
10
|
11
|
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
Автор
Статистика
1.618 подписчиков
0 за неделю
0 за неделю
URL rewriting в ASP.NET для поисковой оптимизации (SEO) (окончание)
URL rewriting в ASP.NET для поисковой оптимизации (SEO) (окончание)И снова я рад вас видеть! Перед тем, как я продолжу эту статью, я хотел бы напомнить, что эта рассылка является всего лишь частичным отражением сайта .NET: Записки программиста. Частичным - потому что рассылка не может заменить собой сайт, на котором найдется место и разделу - для статей, и блогу - для коротких заметок, и галерее - для полезных утилит или смешных историй. Так что, если вам интересно, заходите на сайт .NET: Записки программиста, подписывайтесь на блог - и вы будете узнавать о любых изменениях сайта, как только они будут происходить. А теперь, вернемся к нашей истории ... Если вы еще помните :), мы собирались разобраться, как реализовать url rewriting своими руками. Все сводится к использованию метода HttpContext.RewritePath. При помощи параметра string filePath можно указать, какая страница нашего веб-приложения будет выполнятся на самом деле. RewritePath содержит несколько переопределенных вариантов, которые позволяют изменить такие параметры запроса как query string или path info.
Итак, что для того чтобы перенаправить один url на другой, мы должны:
Осталось корректно обработать аттрибут "action". Раньше, в ASP.NET 1.1, разработчикам приходилось переопределять элемент управления Form, а это значит - менять код всех страниц, заменяя на них стандартный <asp:form>. Кроме того, иногда это приводило к проблемам в Visual Studio WYSIWYG designer. ![]() То есть, мы создаем control adapter для класса HtmlForm, переопределяем в нем метод Render и выполняем rendering используя собственный класс, унаследованный от HtmlTextWriter и отличающися от него только алгоритмом добавления аттрибута "action". Чтобы упростить себе жизнь, воспользуемся одним малоизвестным трюком - если аттрибут "action" вообще не указан - браузер будет использовать для post-back url, указанный в строке запроса, что нас вполне устраивает. Итак, пишем код для form control adapter:
Теперь осталось связать наш control adapter с элементом HtmlForm. Создаем класс Form.browser с таким вот содержимым:
и помещаем его в служебную папку App_Browsers нашего приложения. Вуаля! Теперь значение аттрибута "action" всегда пустое и post-back страниц при любой реализации rewriting должен работать нормально. ![]() Поэтому, чтобы мы могли обрабатывать такие запросы, нам прийдется немного повозится с настройками. Для IIS 6.0 мы воспользуемся "wildcard application mappings". Если в диалоге "Application Configuration" (см. Для IIS 7.0 все еще проще. Вам не понадобиться менять его настройки, для этого достаточно изменить конфигурационный файл приложения. IIS 7.0 позволяет выполнять модули ASP.NET как будто бы это его собственные модули. Измените web.config следующим образом:
Аттрибут runAllManagedModulesForAllRequests позволяет выполнять наш ASP.NET HttpModule в качестве модуля IIS 7.0. Вот теперь окончательно все, теперь мы знаем достаточно, чтобы реализовать SEO friendly карту сайта для news.ru. А вот и время десерта! Понятно, что должны существовать библиотеки, реализующие все то, что мы так долго обсуждали. Причем существуют как полностью бесплатные решения, так и бесплатные Lite версии решений, которые в полной версии уже стоят денег. Но и Lite версии полностью функциональны и вполне покроют наши нужды. Все библиотеки можно разделить на два класса:
UrlRewritingNet.UrlRewriteUrlRewritingNet.UrlRewrite - это бесплатная библиотека, написанная под ASP.NET 2.0. Она позволяет задавать правила, основанные на регулярных выражениях и обеспечивает корректную работу страниц при post-back. Судя по описанию, эта библиотека позволяет нормально использовать другие ASP.NET технологии, с которыми могут возникнуть проблемы (а-ля post-back) при rewriting: темы, master pages, cookieless sessions. Полезный момент - в этом решении для разбора и выполнения правил используется модель, основанная на провайдерах. В библиотеке реализован провайдер правил на базе регулярных выражений. Однако, если вам будет мало этой функциональности, вы сможете добавить своего провайдера, в котором и реализуете всю необходимую вам логику. Следующая ссылка в нашем списке UrlRewriter.NETБиблиотека, очень похожая на предыдущую. Отличается намного более обширным набором правил, команд и операторов, которые вы можете использовать при определении ваших правил. Так же бесплатная. Дальше идут ISAPI Filters Ionics Isapi Rewrite FilterБесплатный ISAPI фильтр, поддерживающий mod_Rewrite-подобный синтаксис конфигурационного файла. По возможностям очень напоминает следующее и последнее в нашем обзоре решение (ISAPI rewrite). Возможно, эти различия можно бы было найти, серьезно используя оба решения в работе, но я в свое время выбрал "ISAPI rewrite". Он до сих пор меня вполне устраивает, так что у меня просто нет необходимости тратить время на более серьезный анализ. И наконец последняя (то есть первая) ссылка нашей выборки ISAPI RewriteЭто - ISAPI Filter фирмы Helicon, разрабатывающей для веб-сайтов и другие продукты, основанные на rewriting (например "Hotlink blocker", позволяющий защитить ваш контент (изображения, файлы) от прямых ссылок или "Helicon Jet", экономящий трафик и увеличивающий производительность ASP приложений). В отличие от всех предыдущих вариантов, ISAPI Rewrite платный ($99). Но можно воспользоваться бесплатной Lite версией. Ее возможностей вполне достаточно для отдельного веб-сайта. По большому счету, от full версии она отличается всего двумя вещами:
![]()
Директива NC позволяет не обращать внимание на регистр, а R=301 указывает, что нужно вернуть браузеру код возврата 301 (permanent redirect).
http://sport.news.ru/ukraine/dinamo-kiev/2007 во внутренние urls вида http://sport.news.ru/list.aspx?country=ukraine&club=dinamo-kiev&year=2007:
Регулярное выражение [-\w]+ обозначает один и больше алфавитно-цифровых символов или дефисов (дефисы тоже используются в названиях), выражение \d+ обозначает одну и больше цифру, директива "L" (Last rule) указывает, что не нужно продолжать применять оставшиеся правила, а сразу выполнять rewriting. Конечно, можно было бы задать более жесткие ограничения (например ограничить год четырмя цифрами), но для того, чтобы понять общую идею, достаточно и такого простого варианта.
http://sex.news.ru/topmodels/dima-bilan-with-famous-top-model-2369 во внутренние urls вида http://sex.news.ru/list.aspx?rubric=topmodels&articleId=2369:
Директива CL позволяет привести запрос к низкому регистру. ![]() Так что я просто пожелаю вам удачи и желания сделать что-то лучше и красивее! |
В избранное | ||