красивые ссылки без идентификатора - PullRequest
2 голосов
/ 09 октября 2009

Я рассматриваю свои варианты реализации красивых ссылок для нового сайта.

Я понимаю, как заставить работать основы, например:

/ вид / postTitle / 7895

Я могу просто взять идентификатор 7895 и просто проигнорировать заголовок.

Однако я вижу, что некоторым веб-сайтам вообще удается избавиться от идентификаторов:

/ вид / postTitle

Как это работает?

Единственный способ, о котором я могу думать, это то, что при каждом запросе pageTitle отправляется в виде строки, и некоторый код выполняет некоторую проверку SQL, чтобы вернуть правильный идентификатор. Однако это будет означать много потенциально дорогих запросов SQL нет? Особенно, когда у вас много постов.

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

Я смотрю на этот неправильный путь? Или есть готовые API и инструменты, чтобы сделать это проще и эффективнее?

Я использую PHP / MySQL, Apache.

Спасибо

Ответы [ 3 ]

2 голосов
/ 09 октября 2009

Создайте функцию, которая нормализует / дезинфицирует заголовки постов - простым способом может быть хеширование представления urlencode () исходного заголовка. Сохраните его как 'id' вместо числового значения, сгенерированного в db, и ваш SQL не нуждается в значительных изменениях.

1 голос
/ 09 октября 2009

Вы правы. Есть два аспекта, с которыми вам нужно разобраться.

Во-первых, когда кто-то отправляет сообщение, вы генерируете html-дружественный URL для добавления к каждой из ссылок. Реально, это не так уж сложно. Вам необходимо заменить пробелы, специальные символы и т. Д. В принципе, любая экранировка, которую вы делаете для хранения базы данных, является хорошей отправной точкой. Вам также необходимо убедиться, что они уникальны .

Во-вторых, когда кто-то попадает на ваш сайт по ссылке, вам нужно правильно ее разрешить. Это немного сложнее, но может эффективно работать так же, если вы думаете о каждом уникально сгенерированном URL как об идентификаторе, потому что это по сути то, чем он становится ... если вы запрашиваете его ( escape 1010 * конечно!).

Для надежной реализации большинство CMS - WordPress и Drupal приходят на ум - справляются с этим довольно эффективно. Исходя из опыта Drupal, я бы посоветовал вам взглянуть на модули «path» и «pathauto», чтобы узнать, как это делается, с акцентом на «path» ... он охватывает обе половины проблемы.

0 голосов
/ 09 октября 2009

У вас правильный подход. Как правило, если это простая CMS с публикациями, используйте пакет, такой как WordPress, и измените его под свои нужды. Если у вас есть пользовательские типы данных, я настоятельно рекомендую SilverStripe, а если вы хотите использовать пользователей, используйте Drupal. Существуют библиотеки и функции, которые могут преобразовывать заголовок записи в URL, что также было бы неплохо. Открытый исходный код великолепен, и вы можете посмотреть, как это сделали другие, попробуйте поискать в github и тому подобное.

...