Некоторые вопросы о слагах в контентной системе ASP.NET MVC - PullRequest
1 голос
/ 26 марта 2010

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

1) Сделать независимыми название и слизняк

Должен ли я разрешить пользователям вводить заголовок и слаг отдельно? Это то, что у меня было первым. У меня также была возможность, что если пользователь не введет Slug, он будет получен из заголовка. Если оба были введены, поле Slug имеет приоритет.

2) Извлекать слаг из заголовка, когда контент вставлен, вот и все для слага, больше никаких изменений

Затем я переключился только на поле Заголовок и извлек Slug из заголовка. При этом я обнаружил, что теперь я должен изменить все формы, которые позволили пользователю ввести слаг. Этот способ также запрещает пользователям менять слагов - они могут изменять заголовок, но это не влияет на слаг. Вы можете думать об этом, как Slug - уникальный идентификатор.

3) Теперь я снова думаю о том, чтобы разрешить пользователям менять слаг

Хотя я не думаю, что это все так полезно. Сколько раз контент, который кто-то уже добавил, потратил время на его написание, даже требует смены заголовка или слага? Я не думаю, что это так много раз.

Самая большая проблема с 3-м вариантом заключается в том, что если я использую Slugs в качестве идентификаторов, мне нужно обновить ссылку повсюду, когда Slug изменяется. Или ведите таблицу, которая будет содержать некоторую историю истории слизней.

Что вы думаете об этих, надеюсь, верных вопросах?

Если у кого-то есть образец дизайна БД для этого, будет полезно, если вы поделитесь им здесь.

Ответы [ 4 ]

2 голосов
/ 12 октября 2012

Если вы решите разрешить пользователям редактировать слаги, вы можете включить идентификатор содержимого в URL и выполнить 301 Moved Permanently, если оно не соответствует текущему слагу. Например, если /product/42/black-bucket/ сейчас /product/42/shiny-black-bucket/, вы можете перенаправить на новый слаг. Я видел рекомендации не разрешать использование произвольных слагов для ваших URL-адресов, поскольку это нарушает концепцию канонических ссылок для поисковых роботов и позволяет злоумышленникам обыгрывать ваши результаты.

1 голос
/ 26 марта 2010

Я только что прошел через все это с клиентом, разбирал правила по URL и т. Д.

Ваш слаг должен быть как минимум немного независимым от заголовка, хотя бы для того, чтобы вы могли убрать стандартные «стоп-слова» - большинство SEO рекомендуют, чтобы путь к странице был как можно более богатым ключевым словом, поэтому заголовок страницы из:

Дорогая: мы будем резать глубже и жестче, чем Тэтчер

Может стать слизней:

Алистер Дарлинг-вырезать глубже Margaret-Тетчер

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

дорогая воля-вырезать глубже сложнее, чем Тетчер

Но вам нужно дать автору возможность настраиваться сверх этого.

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

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

1 голос
/ 26 марта 2010

Лично я бы предложил разрешить пользователю редактировать заголовок и другое содержимое записи для страницы. После того, как они это сделали, вы можете извлечь слаг из названия (или чего-либо еще, что вам нравится). Если они меняют заголовок, то слаг может измениться, но вы можете вести учет старых слагов, связанных с той же страницей. Если кто-то заходит на сайт со старым слагом, вы можете отправить ему 301 ответ и перенаправить его на новую страницу. Это будет сделано через страницу перехвата, обрабатываемую вашей маршрутизацией.

Еще один вопрос: если они меняют заголовок, это новая страница с новым контентом и новым фрагментом?

Мысли

0 голосов
/ 26 марта 2010

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

Или, как сказал @WestDiscGolf, вести учет всех старых слагов и отправлять перенаправление.

...