Как оптимизировать SEO существующее веб-приложение ASP .NET 3.5 под IIS6 - PullRequest
1 голос
/ 12 июня 2009

Итак, я знаю, что есть много этой темы здесь и через Интернет. Но большинство статей / вопросов относится к «статическому» переписыванию URL, например:

www.site.com/products.aspx?category=Books

Поэтому они переписывают его на

www.site.com/Products/Books

Это нормально, но мне нужно что-то еще.

Сайт похож на CMS, имеет разные типы контента.

В настоящее время, чтобы прочитать статью под названием «Как StackOverflow помогает вам в вашей разработке», вам нужно перейти по следующему URL-адресу:

www.site.com/viewContent.aspx?Id=1234

То, чего я хочу достичь, это:

www.site.com/Content/Articles/how-to-stackoverflow-helps-you-in-your-development

Итак, насколько я понимаю, мне нужно подключить к этому ASP .NET, потому что сначала мне нужно извлечь статью (конечно, ее название), а затем переписать URL.

Но мне интересно, как, черт возьми, ASP .NET узнает, как получить эту статью, если я пойду по этому URL, она нигде не содержит идентификатор ... Так что, возможно, я мог бы принять что-то вроде

www.site.com/Content/Articles/1234/how-to-stackoverflow-helps-you-in-your-development

Я действительно потерян здесь ... Я вообще никогда не переписывал URL, и я много гуглил, и я не могу найти способ сделать то, что я хочу. Может быть, то, что я хочу, не называется переписыванием URL ??? Я не знаю ...

Сайт работает под управлением Windows 2003 Server, IIS6, ASP .NET 3.5 SP1. И, конечно, мне нужно бесплатное решение, я не могу потратить 100 долларов на мод ISAPI (кроме того, я не знаю, будет ли это делать то, что мне нужно).

Спасибо всем и извините, если это дублированный вопрос, но я не смог его найти.

РЕДАКТИРОВАТЬ : мне не нужно поддерживать файлы не-ASPP .NET (jpgs, gifs и т. Д.), Их не нужно переписывать. Мне просто нужно переписать страницу viewContent, чтобы включить заголовок контента в URL.

Ответы [ 5 ]

5 голосов
/ 12 июня 2009

Вы можете использовать новую Маршрутизацию , которая поставляется с ASP.Net 3.5 sp1, чтобы иметь чистые URL.

Это можно сделать даже в веб-формах, а не только в MVC. (Я сделал это сам). См. здесь и здесь для ознакомления с примерами его настройки.

Вы можете добавить Id статьи и заголовок в URL и сделать Id реальным параметром, который используется для поиска статьи. Это то, что делает SO. Попробуйте удалить вопрос для URL, и он перенесет вас туда же.

Даже если вы не используете Id, вы можете передать заголовок статьи «How-to-stackoverflow-помогает-вам-в-вашем-развитии» в вашу БД и получить статью, основываясь на заголовке.

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

Есть несколько способов работы:

  1. Использование сопоставления с подстановочными знаками в IIS для сопоставления всех запросов с Asp.Net
  2. Поместите Default.aspx в конце ваших URL

См. сообщение для других возможных решений.

Хотя первое решение может иметь проблемы с производительностью, если весь контент вашего сайта проходит через Asp.Net (даже изображения, css, .html ...) на небольшом сайте, это не должно иметь значения. Я использовал этот подход, и не было никаких серьезных проблем с производительностью. Я думаю, что это самое простое решение. Вот сайт Я построил с ним

Надеюсь, это поможет.

2 голосов
/ 12 июня 2009

Это бесплатно, я использовал его, и он работает довольно хорошо: http://www.codeplex.com/IIRF

Приятно то, что он будет обрабатывать URL-адреса без расширения (т.е. ASPX, HTML и т. Д.)

1 голос
/ 12 августа 2009

Этого можно добиться с помощью маршрутизации ASP.NET. Это можно сделать с помощью ASP.NET MVC, а также с помощью Webforms. С IIS ничего не нужно делать.

Проверьте ссылку ниже

http://www.4guysfromrolla.com/articles/051309-1.aspx#postadlink

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

Вы можете получить Id контента, используя заголовок. Но заголовок должен быть уникальным. Вы можете использовать ajax, чтобы проверить, является ли заголовок уже существующим, когда пользователь убирает мышь из текстового поля.

0 голосов
/ 12 августа 2009

Самый простой способ - добавить модуль http в текущий проект webforms.

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

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

0 голосов
/ 12 июня 2009

ASP.net MVC ваш друг для этого

использование стекового потока MVC

...