Создание SEO (и пользователей) дружественных URL в вашем приложении ASP.NET MVC

  1. Вступление
  2. Генерация URL
  3. Привязка параметров

Опубликовано: 28 июля 2015 г.

Вступление

Посмотрите на следующий URL:

http://www.amazon.com/gp/product/1617292397/ref=s9_psimh_gw_p14_d4_i1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1&pf_rd_r=0TFM5Q6WM6KD9NPNG9G7&pf_rd_t=36701&pf_rd_p=2079475242&pf_rd_i=desktop

Вы хоть представляете, на что указывает URL, просто взглянув на него? Скорее всего нет.

Теперь посмотрим на это:

http://www.dpreview.com/articles/9485436827/the-big-beast-hands-on-with-the-panasonic-lumix-dmc-gx8

Любая идея? Ну, может показаться, что это статья о практической работе с Panasonic Lumix DMX-GX8.

В сегодняшней записи блога я хотел бы продемонстрировать, как создавать «дружественные» URL-адреса в ваших приложениях ASP.NET. Дружественный не только в том смысле, что кто-то может посмотреть на него и выяснить, на что указывает URL, но, что более важно, дружественный для поисковых систем.

Прямо сейчас вы, возможно, спросите, как это влияет на поисковые системы, такие как Google, каков URL страницы? Наверняка компьютеру все равно? Ну, вы были бы в некотором роде правы, но дело в том, что наличие ключевых слов, по которым вы пытаетесь ранжироваться в URL страницы, действительно имеет значение.

Есть много вещей, которые играют роль в том, как Google определяет рейтинг веб-страницы, и никто не может точно сказать, насколько большую роль играет каждый из этих факторов. Однако большинство людей согласны с тем, что наличие ключевых слов, по которым вы хотите, чтобы страница ранжировалась в URL страницы, действительно помогает в ранжировании страницы.

В этой записи блога я собираюсь показать вам, как создавать URL-адреса в вашем приложении, которое является более SEO - и удобным для пользователя.

Генерация URL

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

Мой класс продукта довольно прост:

открытый класс Product {public string Description {get; задавать ; } public int Id {get; задавать ; } публичная строка Name {get; задавать ; } публичная цена Price {get; задавать ; }}

На странице со списком продуктов я просто отображаю список продуктов:

На странице со списком продуктов я просто отображаю список продуктов:

И когда пользователь нажимает на конкретный продукт, он переходит на страницу сведений о продукте:

И когда пользователь нажимает на конкретный продукт, он переходит на страницу сведений о продукте:

Посмотрите на URL, который мы генерируем:

Посмотрите на URL, который мы генерируем:

Это обычный URL, который вы получаете в большинстве приложений ASP.NET MVC, который передает идентификатор конкретной строки базы данных в действие контроллера.

Мы хотим иметь что-то более удобное для пользователя. Кое-что, по крайней мере, также содержит название нашего продукта. Чтобы сгенерировать дружественный URL-адрес, я создал новый метод в своем классе Product, который генерирует правильный «кусок» (или URL) для страницы сведений о продукте:

открытый класс Product {public string Description {get; задавать ; } public int Id {get; задавать ; } публичная строка Name {get; задавать ; } публичная цена Price {get; задавать ; } // Генерация слагов взята с http://stackoverflow.com/questions/2920744/url-slugify-algorithm-in-c public string GenerateSlug () {строковая фраза = string .Format ("{0} - {1}" , Id, Name); строка str = RemoveAccent (фраза) .ToLower (); // неверные символы str = Regex.Replace (str, @ "[^ a-z0-9 \ s-]", ""); // преобразовать несколько пробелов в один пробел str = Regex.Replace (str, @ "\ s +", "") .Trim (); // вырезать и обрезать str = str.Substring (0, str.Length <= 45? str.Length: 45) .Trim (); str = Regex.Replace (str, @ "\ s", "-"); // дефисы return str; } приватная строка RemoveAccent (string text) {byte [] bytes = System.Text.Encoding.GetEncoding ("Cyrillic") .GetBytes (text); return System.Text.Encoding.ASCII.GetString (bytes); }}

И я также обновил свою страницу листинга, чтобы использовать slug в качестве параметра маршрута вместо Id, как это было раньше:

<таблица> <thead> <tr> <th> имя </ th> <th> цена </ th> <th> изображение </ th> </ tr> </ thead> <tbody> @foreach (var product in Модель) {<tr> <td> <a href = "@ Url.Action (" Детали "," Продукты ", новый {id = @ product.GenerateSlug ()})"> @ product.Name </ a> < / td> <td> @ product.Price </ td> <td> <img src = "http://placehold.it/100x100" /> </ td> </ tr>} </ tbody> </ table >

Теперь, когда я перехожу на страницу сведений о продукте, я вижу, что у нас есть правильный «дружественный» URL-адрес, который содержит название продукта:

Привязка параметров

Но также обратите внимание, что у нас есть новая ошибка. ASP.NET MVC жалуется, что ожидал параметр маршрута id, но не смог его найти. Это потому, что действие Details на моем контроллере ожидает целочисленное значение для параметра id:

public ActionResult Details (int id) {...}

Но вместо целого числа часть нашего маршрута {id} теперь содержит строку. Среда MVC пытается преобразовать строку в целое число, но не может этого сделать, и поэтому она передает нулевое значение, а затем жалуется, что параметр id не может содержать нулевое значение.

Чтобы исправить эту ошибку, нам нужно изменить RouteData для маршрута, чтобы исправить значение параметра id route.

Я создал новый класс с именем SeoFriendlyRoute, который наследуется от Route, и переопределил метод GetRouteData для очистки параметра id. В моей реализации я вызываю базовый метод GetRouteData и проверяю, являются ли данные маршрута не нулевыми, в этом случае это означает, что у меня есть соответствие для моего маршрута.

В этом случае я просто проверяю, присутствует ли параметр id, и если это так, я использую регулярное выражение для извлечения первой части URL, содержащей фактический числовой идентификатор, и назначаю это числовое значение значению маршрута id:

открытый класс SeoFriendlyRoute: Route {public SeoFriendlyRoute (строковый url, значения по умолчанию RouteValueDictionary, IRouteHandler routeHandler): base (url, значения по умолчанию, routeHandler) {} public переопределить RouteData GetRouteData (HttpContextBase httpG_DataTataTataTataTataTataTataTataTataTataTataTataTataTataTataTataTataTataTataTateTateBataTataTextDateTateBataTataTextDateTextDateTateBataTataTextDataTextDextDateTextBateTataTextDateTextDeteDataTextBateTataTextBeteTateText_TextE)): открытый класс. if (routeData! = null) {if (routeData.Values.ContainsKey ("id")) routeData.Values ​​["id"] = GetIdValue (routeData.Values ​​["id"]); } return routeData; } закрытый объект GetIdValue (идентификатор объекта) {if (id! = null) {string idValue = id.ToString (); var regex = new Regex (@ "^ (? <id> \ d +). * $"); var match = regex.Match (idValue); if (match.Success) {return match.Groups ["id"] .Value; }} return id; }}

И последний бит - добавить новый маршрут для пути / products / details / {id}, чтобы использовать мой новый класс маршрута SeoFriendlyRoute:

открытый класс RouteConfig {открытый статический void RegisterRoutes (маршруты RouteCollection) {rout.IgnoreRoute ("{resource} .axd / {* pathInfo}"); route.Add ("ProductDetails", новый SeoFriendlyRoute ("products / details / {id}", новый RouteValueDictionary (new {controller = "Products", action = "Details"}), новый MvcRouteHandler ())); route.MapRoute ("По умолчанию", "{controller} / {action} / {id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional}); }}

И теперь, когда я обновляю страницу, параметры привязываются правильно, поскольку только числовая часть URL-адреса продукта, которая содержит фактический идентификатор продукта, передается как параметр id:

И теперь, когда я обновляю страницу, параметры привязываются правильно, поскольку только числовая часть URL-адреса продукта, которая содержит фактический идентификатор продукта, передается как параметр id:

Если вы нашли ценность в этом сообщении в блоге и хотите вернуть услугу, вы можете Купи мне кофе

PS: я публикую еженедельную рассылку для разработчиков ASP.NET под названием ASP.NET Weekly . Если вы хотите получать электронную почту каждую пятницу со всеми лучшими сообщениями в блогах, связанных с ASP.NET за предыдущую неделю, пожалуйста, Подписаться !

Похожие

SEO стажер
Как Инфотех является профессионально ориентированной компанией веб-дизайна и веб-разработки, расположенной в Нью-Дели, Индия. Мы проводим обучение по проектам в области поисковой оптимизации в режиме реального времени для выпускников ИТ-отделов / Fresher, которые готовы сделать свою карьеру
Joomla SEO
... генерация ключевых слов и описаний осуществляется расширением SEO-Generator. Это дает вам много SEO помощи и дает вам возможность установить метатеги робота, ключи подтверждения Google для веб-мастеров и конфигурации заголовков. Титул менеджер Другой способ создать лучшие заголовки страниц с невероятным SEO - это расширение диспетчера заголовков для Joomla. Это расширение предоставляет вам возможность отображать название вашего сайта с заголовками страниц и многими
White Hat SEO - Position1SEO
SEO является единственной возможностью, когда вы думаете об оптимизации вашего сайта. Возможно, в прошлом вы откладывали SEO, неохотно заполняя свой сайт скрытым текстом и обратными ссылками. К счастью, эти методы являются пережитками прошлого. Благодаря обновлениям Google, таким как Caffeine, Panda и Penguin, призванным обеспечить,
SEO консалтинговые услуги
Пример анализа карты органического тепла: поисковый трафик на душу населения Нормализовано 50-100 Demand Signals предлагает услуги SEO-консалтинга, которые помогут
Идеальный URL для SEO | ICU идей
В этой статье мы поймем, как оптимизировать URL вашего сайта. Чтобы получить наилучшие результаты, важно понимать все, что касается URL: определение, анатомия и лучшие практики для SEO , Что такое URL? URL (Uniform Resource Locator) - это подмножество Uniform Resource Identifiers (URI), которое в переводе на наш язык означает Uniform Resource Identifiers. По сути, мы можем сказать, что
SEO с виджетами
Виджеты сейчас крутые - но полезны ли они для оптимизации Google? На семинаре по SEO мы говорили о том, можно ли и как создавать внешние ссылки. Отличным предложением было создать виджет для блоггеров и веб-мастеров, которые затем разместят их на своем сайте. Отличная идея, но так, чтобы ничего не проскальзывало, поэтому вот несколько советов и мыслей.
SEO Jobs Finder
SEO компании Индии | SEO компании США | SEO компании в Великобритании | SEO компании Швеции | SEO компании в Швейцарии |
GSA SEO Indexer
Лицензия: Shareware $ 20 Всего загрузок: 57 (1 за последнюю неделю) Операционная система: Windows XP / Vista / 7/8/10 Последняя версия: 2.31 GSA SEO Indexer 2.31 доступен для скачивания в нашей библиотеке программ. Следующие версии наиболее часто загружаются пользователями программы: 1.8 и 1.5. GSA SEO
Руководство по SEO для конечных пользователей Shopify!
... Network Solutions или кому бы вы ни пользовались, чтобы вы могли указать свой домен на Shopify, когда сайт будет готов к работе. Подробнее об этом вы можете проверить DNS-вики Shopify , Senario Как только у вас есть готовый список URL-адресов, начинается утомительная работа. Прежде чем мы перейдем к тому, как это сделать, давайте узнаем, почему то, что я собираюсь рассказать вам, так важно и часто
Пассаж в SEO
Для подготовки эффективного SEO-контента важно знать, что такое пассаж. Так называют последовательность слов, которая отделяется от следующей группы определенным знаком препинания или HTML-тегом. Знаки препинания для разделения - это точка (если она отделена пропуском от следующего
Социальная серия SEO оптимизации: SEO для Instagram
Как я уже упоминал в первой статье этой серии

Комментарии

Что такое создание контента SEO?
Что такое создание контента SEO? Прежде чем мы углубимся в процесс создания контента для SEO, давайте подробнее рассмотрим, что такое SEO. Как говорит Моз SEO - это маркетинговая дисциплина, ориентированная на растущую видимость в органических (неоплачиваемых) результатах поисковых систем ». Поисковая система Land называет SEO «Процесс получения
SEO для iPhone и iPad для SEO?
SEO для iPhone и iPad для SEO? Давайте попробуем справочный раздел. Поисковая оптимизация для мобильных платформ Apple немного сбивает с толку, так как под «SEO» некоторые люди понимают по-разному: «написание приложения для хорошей работы на платформе», «высокий рейтинг в магазине приложений iTunes» и «высокий рейтинг» в Google и других поисковых системах ». Здесь мы попытаемся решить все эти вопросы, а также затронем все аспекты маркетинга приложений, поскольку SEO затрагивает
Что заставило вас почувствовать, что новый бренд был необходим после того, как SEO Digger уже был настолько известен в сообществе SEO?
Что заставило вас почувствовать, что новый бренд был необходим после того, как SEO Digger уже был настолько известен в сообществе SEO? SeoDigger еще не был закрыт. Доступ к API для всех зарегистрированных пользователей по-прежнему активен :) Мы планируем закрыть его после завершения интеграции с Market Samurai. Мы дали проекту новое название, чтобы подчеркнуть его новизну. Кроме того, ценность продукта для нас важнее, чем его название. Насколько сложно
Есть вопросы по SEO или Yoast, которые вы хотели бы, чтобы мы затронули?
Есть вопросы по SEO или Yoast, которые вы хотели бы, чтобы мы затронули? Дайте нам знать в комментариях ниже!
Вы находитесь в Лионе и его регионе, и вам нужна SEO или SEO оптимизация для вашего сайта?
Вы находитесь в Лионе и его регионе, и вам нужна SEO или SEO оптимизация для вашего сайта? HDV Référencement вмешивается в сектор Auvergne Rhône Alpes для любого SEO-аудита, сетевых ссылок или SEO-оптимизации. SEO сайта Овернь Рона-Альпы
Вам нужно программное обеспечение SEO или агентство SEO?
Вам нужно программное обеспечение SEO или агентство SEO? Существует множество инструментов SEO, но с постоянно меняющимися веб-платформами, алгоритмами и лучшими практиками, действительно ли они являются лучшим вариантом для поддержания вашего бизнеса на вершине результатов поисковой системы?
Таким образом, лакмусовая бумажка для SEO «черной шляпы» проста: задайте себе вопрос - «предлагает ли эта страница лучший опыт для моих пользователей?
Таким образом, лакмусовая бумажка для SEO «черной шляпы» проста: задайте себе вопрос - «предлагает ли эта страница лучший опыт для моих пользователей?». Если ответ на этот вопрос «да», вы в чистом виде. Тем не менее, есть список действий, которые строго запрещены Google. Вот некоторые из них: Использование автоматически сгенерированного контента маскировка Использование дублированного контента Участие в схемах ссылок Создание
Ваше агентство SEO отправляет вам ежемесячные отчеты SEO, чтобы вы знали свою реальную ситуацию в Google?
Ваше агентство SEO отправляет вам ежемесячные отчеты SEO, чтобы вы знали свою реальную ситуацию в Google? SEO-аудит, также называемый SEO-анализом или расширенным SEO-отчетом,
Чем отличается местный SEO от обычного (национального) SEO?
Чем отличается местный SEO от обычного (национального) SEO? Основные элементы SEO применимы как к SEO, так и к SEO. Вот некоторые из этих факторов: использование ключевых слов, заголовки и текстовые изображения для внутренних и входящих ссылок, социальные сети и индексация в поисковых системах за пределами страницы. Разница между местным и национальным SEO заключается в том, что приоритет и внимание уделяется действиям, которые повлияют на то, как местные интернет-пользователи получают
Если вы ищете помощь SEO, попросите компанию, которую вы ищете, нанять простой вопрос… «Какова будет ваша стратегия SEO для моего бизнеса?
Если вы ищете помощь SEO, попросите компанию, которую вы ищете, нанять простой вопрос… «Какова будет ваша стратегия SEO для моего бизнеса?» Если они отвечают, не задавая никаких вопросов о ваших бизнес-целях и задачах, я рекомендую вам продолжить поиск в другом месте. Я написал статью для предпринимателя под названием « 9 ключевых вопросов, которые следует задать SEO компании, прежде чем нанимать ее или увольнять
Вы знаете, что SEO важен для успеха вашего сайта WordPress, но когда вы в последний раз заглядывали под капот, чтобы оценить свою эффективность SEO?
Вы знаете, что SEO важен для успеха вашего сайта WordPress, но когда вы в последний раз заглядывали под капот, чтобы оценить свою эффективность SEO? В этом посте мы расскажем вам об инструментах, шагах и вопросах для проведения вашего собственного SEO-аудита WordPress. Оценив наиболее важные факторы, влияющие на производительность поисковой оптимизации, вы убедитесь, что ваш сайт работает на оптимальном уровне. Ниже приведены вопросы, которые мы считаем наиболее важными для

Com/gp/product/1617292397/ref=s9_psimh_gw_p14_d4_i1?
Прямо сейчас вы, возможно, спросите, как это влияет на поисковые системы, такие как Google, каков URL страницы?
Наверняка компьютеру все равно?
Length <= 45?
Чтобы получить наилучшие результаты, важно понимать все, что касается URL: определение, анатомия и лучшие практики для SEO , Что такое URL?
Что такое создание контента SEO?
SEO для iPhone и iPad для SEO?
Что заставило вас почувствовать, что новый бренд был необходим после того, как SEO Digger уже был настолько известен в сообществе SEO?
Есть вопросы по SEO или Yoast, которые вы хотели бы, чтобы мы затронули?
Вы находитесь в Лионе и его регионе, и вам нужна SEO или SEO оптимизация для вашего сайта?