Как реализовать постоянную ссылку в стиле Wordpress - PullRequest
1 голос
/ 10 ноября 2010

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

Ответы [ 3 ]

1 голос
/ 10 ноября 2010

Какой язык вы используете?Я предполагаю, что вы думаете о PHP (учитывая вашу ссылку на слово press).У вас есть несколько вариантов:

  1. Mod-Rewrite
  2. Маршрутизатор

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

1 голос
/ 10 ноября 2010

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

Перезапись URL

При переписывании URL вам потребуется перехватить запрошенный URL и отправить его на ваш фронт-контроллер. Обычно это достигается на уровне веб-сервера, хотя некоторые серверы приложений также действуют как веб-серверы. В Apache, как уже сообщали другие, вы бы использовали mod_rewrite с правилом, которое выглядит примерно так:

RewriteRule ^/(.*) /path/to/front/controller.ext [E=REQUEST_URI:%{REQUEST_URI},QSA,PT,NS]

С этим правилом путь, первоначально запрошенный с, будет отправлен на фронт-контроллер в виде переменной с именем "REQUEST_URI". Обратите внимание, я не уверен, правильный синтаксис в PHP для доступа к нему. В хэше фронт-контроллера (например, MD5) это значение используется и используется для поиска записи в базе данных - учитывайте, какой алгоритм хеширования вы используете, что приведет к дублированию. Хеш необходим, если вы разрешаете URL-адреса, превышающие максимальный размер столбца в вашей базе данных для данных varchar, при условии, что вы не можете выполнять поиск по объектам CLOB.

Создание физического файла

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

Рекомендация

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

1 голос
/ 10 ноября 2010

Я бы порекомендовал создавать ссылки, передающие параметр URL, например ... "http: //...PostID? 123 & CatID = 232 & ...", чтобы при нажатии этой конкретной ссылки пользователь мог проанализируйте параметры в URL-адресе и получите точное сообщение на основе идентификатора или даже выполните дополнительную фильтрацию, передавая другие поля по мере необходимости.

...