Создание дружественных для поисковых систем URL в ASP.NET MVC - PullRequest
0 голосов
/ 19 июля 2009

Я хотел бы разработать URL, которые выглядят следующим образом:

http://mysite.com/products/1/best-product-in-the-world

Где все, что мне нужно, чтобы добраться до нужной записи, это следующий маршрут:

http://mysite.com/products/1

Когда я добавляю описание продукта в URL («лучший продукт в мире»), у меня возникают проблемы с кодировкой URL. Я пытался использовать Server.UrlEncode при создании этой части моего URL в ActionLink (...):

<%= Html.ActionLink(item.Subject, "../Post/Detail", 
    new { id = item.ID, 
          descriptiveUrl = Server.UrlEncode(Product.ShortDescription) }, 
    new { rel = "canonical", 
          title = Product.ShortDescription, 
          @class = "product-hyperlink" })%>

Но это отрисовывает регулярно закодированные элементы для специальных символов и пробелов, подобно следующему:

http://localhost:2392/Products/Detail/1/best+product+in+the+world253f

..., который создает исключение 400 неправильных запросов. Не уверен, что я правильно понял вопрос, но могу дать дополнительные разъяснения, если это будет необходимо.

Обновление : URL этого поста следующий, и я пытаюсь сделать что-то очень похожее!

http://stackoverflow.com/questions/1148955/creating-search-engine-friendly-urls-in-asp-net-mvc

Ответы [ 3 ]

3 голосов
/ 19 июля 2009

В более глубоком поиске Google я нашел следующую ссылку для генерации слагов:

http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx

Спасибо @Rob и @Coding the Wheel за предоставленную мне терминологию, которая мне действительно нужна, чтобы найти этот ответ!

2 голосов
/ 19 июля 2009

Простой вариант - добавить свойство к объекту модели с помощью метода доступа, который нормализует соответствующее поле (в данном случае краткое описание) до подходящего «слага»; то есть немного ненужного текста после идентификатора. Затем вы используете это при создании URI.

Процесс нормализации может быть таким же простым, как удаление любых не алфавитно-цифровых символов и замена пробелов дефисами.

1 голос
/ 19 июля 2009

Стандартная практика здесь - хранить 'slug' с каждым постом, который будет функционировать как внешний URL поста. Например, ваш слаг для вышеупомянутого поста будет:

best-product-in-the-world

Приличная CMS сделает это автоматически и позволит вам настроить слизняк перед сохранением.

...