SEO URL с помощью ASP.NET MVC - PullRequest
       21

SEO URL с помощью ASP.NET MVC

5 голосов
/ 09 апреля 2009

Существуют ли определенные DO и DONT при реализации URL-адресов seo? Хорошая практика хорошо подходит для сайтов .html, но не подходит для средних и больших баз данных.

AFAIK URL должен быть www.mysite.com / category / page-name-here

Если я хочу сделать сайт с богатым контентом и по умолчанию, категория и страница управляются базой данных - это мешает мне иметь такие страницы, как www.mysite.com / about или www .mysite.com / home , поскольку страницы about и home могут конфликтовать.

Несмотря на то, что механизм маршрутизации является гибким, выполнимо ли и / или целесообразно ли это?

-edit-

Просто, чтобы уточнить мой вопрос, возможно ли управлять механизмом маршрутизации с помощью базы данных?

Рекомендуется, чтобы URL содержал содержательное описание - например, stackoverflow.com / category / mvc и stackoverflow.com / questions / seo-urls-with-asp-net- mvc - это хорошо (в отличие от stackoverflow.com / category / 9955 и stackoverflow.com / questions / 734583 )

В качестве экспирации я хотел бы перевести элемент управления на другой уровень, скажем, что два вышеприведенных контроллера (категория и вопросы), каждый из которых отображает динамические данные, могут быть изменены так, чтобы они были просто stackoverflow.com / mvc и stackoverflow.com / seo-urls-with-asp-net-mvc .

Мне нужно было бы убедиться, что в моей базе данных есть таблица, которая говорит мне, что первая должна быть перенаправлена ​​как категория, а вторая как вопросы - это может быть достигнуто простым поиском в базе данных и должно быть реализовано в Global.asax

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

Ответы [ 2 ]

8 голосов
/ 09 апреля 2009

Это легко выполнимо, если вы добавите жестко закодированные маршруты выше общих:

// AboutController.Index()
routes.MapRoute( 
    "About",
    "about",
    new { controller = "About", action = "Index" });

// HomeController.Index()
routes.MapRoute( 
    "Home",
    "home",
    new { controller = "Home", action = "Index" });

// ArticleController.Index(string category, string pagename)
routes.MapRoute( 
    "Article",
    "{category}/{pagename}",
    new { controller = "Article", action = "Index" });

Они могли бы все использовать один и тот же контроллер, если хотите, но было бы немного проще, если бы они использовали отдельные.

Единственная проблема, с которой вы столкнулись бы, это если бы у вас была категория "около" или "дом", но я вряд ли это себе представляю.

Следует также отметить, что вам не нужно использовать ASP.NET MVC, чтобы использовать возможность маршрутизации .

5 голосов
/ 09 апреля 2009

Чтобы избежать проблем, которые вы упоминаете со статическими страницами (о, дома и т. Д.), Вы можете сделать несколько разных подходов:

  1. Поместите страницы динамической категории в отдельный путь (например, www.mysite.com/shop/category/page-name-here)
  2. Поместите статические страницы в отдельный путь (например, www.mysite.com/pages/about). Теперь вы не можете иметь категорию под названием "страницы", но все остальные будут работать.
  3. Поместите статические маршруты выше динамических маршрутов. Не идеально, так как он может скрыть страницы категорий, если вы плохо называете свои категории, но даже если вы сделали # 1 или # 2, вы все равно захотите сделать это как меру на всякий случай.

Другие оговорки / ошибки:

  1. Вам также необходимо убедиться, что названия вашей категории и названия страниц уникальны. На большом сайте это не всегда тривиально (или даже практично), поэтому, вероятно, вы видите URL-адреса, подобные приведенным здесь, в переполнении стека, где идентификатор вопроса фактически находится в URL-адресе, а часть «имя страницы» - просто сахар SEO.

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

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

...