Если вы хотите собрать все целиком самостоятельно, сначала поймите, что такое фронт-контроллер , поскольку он действительно решает основную проблему того, как выполнить один и тот же код для разных 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, поэтому вам не нужно беспокоиться о записи файлов динамического кода во время выполнения. Тем не менее, если вы хотите что-то с меньшим количеством магии, или вы ожидаете много запросов, генерация физических файлов - путь, потому что это более очевидно и требует от сервера выполнять меньше работы.