Полностью отредактировано: мой предыдущий ответ был основан на неправильном понимании того, что вы пытаетесь задать.
То, что вы просите, - это создать дружественную систему URL.Это описано во многих руководствах - просто выполните поиск «дружественных URL», и вы найдете множество ресурсов.
Вот краткая информация о том, как это работает ...
Чтобы создать дружественные URLдля вашего сайта вам понадобится что-то вроде этого в .htaccess
(не уверен, правильно ли я понял RewriteRule
, потому что это совершенно не в моей голове, так что поискайте в полномасштабном учебнике для проверки):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule /info/(.+) /info.php?name=$1
</IfModule>
Это означает, что запрос к http://www.example.com/info/foo
будет переписан на http://www.example.com/info.php?name=foo
.
Затем вам необходимо изменить приложение (в частности, файл info.php) для обработки этого новогоФормат запроса, в котором name
указан в URL-адресе вместо id
.
. Обратите внимание, что в этом примере все имена (например, «foo») должны быть уникальными.Если какие-либо два элемента в вашей базе данных имеют одно и то же имя, у вас будут проблемы.Имея это в виду, вы можете добавить новое поле в таблицу базы данных, которая представляет собой уникальный столбец, содержащий строку, содержащую только буквенно-цифровые символы и дефисы, подходящие для использования в URL-адресе (строка такого типа называется слагом).Вы будете использовать этот слаг вместо идентификатора для запросов к базе данных.Допустим, вы создаете элемент под названием «Дискомбобулятор».Когда этот элемент создается в вашем приложении, он также должен создать слаг по образцу «the-discombobulator» и обеспечить его уникальность.Если вы создадите второй элемент, также называемый «Дискомбобулятор», ваше приложение может создать для него слаг, например «the-discombobulator-2».
Так что, когда кто-то запрашивает http://www.example.com/info/the-discombobulator-2
, mod_rewrite изменяет его на http://www.example.com/info.php?name=the-discombobulator-2
и передает его вашему приложению.Ваше приложение получает параметр name
, который является «-comcombulator-2», ищет его в поле slug базы данных и получает соответствующую запись.