Реализация функциональности URL-слагов на сайте - PullRequest
0 голосов
/ 06 октября 2010

Я хотел бы знать, как реализовать функциональность URL-адреса в веб-сайте без указания идентификатора просматриваемой записи в URL-адресе.

Например, URL-адреса StackOverflow выглядят так: MVC Dynamic Views From Url Slug . Обратите внимание, что URL содержит идентификатор записи. Если бы я занес в закладки эту страницу, и по какой-то причине идентификатор записи изменился, я бы не смог просмотреть эту запись в будущем.

Я хочу реализовать функцию URL slug, которая не зависит от идентификатора записи, поэтому она будет выглядеть примерно так: https://stackoverflow.com/questions/mvc-dynamic-views-from-url-slug.

Не могли бы вы указать шаги для достижения этой цели? Используете ли вы заголовок записи и медлит, сохраняете этот слаг и никогда больше не меняете его?

Пример URL-адреса того, что я ищу, это http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data-link-and-globalization-accepted-as-official-jquery-plugins.aspx (обратите внимание, что в URL нет идентификатора)

Спасибо!

Ответы [ 3 ]

5 голосов
/ 06 октября 2010

Это в основном то, что вы делаете. Каждый метод имеет свои преимущества:

  • При переполнении стека, поскольку заголовок вопроса можно изменить, идентификатор используется для постоянной ссылки на вопрос, а URL-адреса с неправильным заголовком просто перенаправляют.
  • Использование слага в качестве постоянного идентификатора означает, что слаг никогда не сможет измениться. Изменение заголовка будет возможно, но это может показаться запутанным, и вам лучше перенаправить слаг. Кроме того, слизни либо должны быть глобально уникальными, либо вам нужно найти способ обеспечить уникальность для каждого года / месяца / дня или чего-либо еще.

Вам понадобится индекс базы данных для эффективного поиска слагов. К счастью, поле Slug в Django автоматически создает индекс базы данных.

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

1 голос
/ 06 октября 2010

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

1 голос
/ 06 октября 2010

Вы ищете перезапись URL ?

...