КАК переписать такие ссылки?

У меня есть ссылка, скажем: http://site.com/profile.php?id=1 ....В обычном режиме при обычной перезаписи у меня было бы что-то вроде: http://site.com/profile/1 . Но... Что я хочу, так это... как я могу получить из базы данных имя пользователя, принадлежащее пользователю с идентификатором 1, и сделать URL-адрес http://site.com/profile/FinalDestiny ?

Спасибо,


person FinalDestiny    schedule 07.08.2010    source источник
comment
Вы имеете в виду генерировать URL-адреса или обрабатывать URL-адреса? Если сгенерировать, то какой фреймворк вы используете (если есть)? Если процесс, то вы можете сделать это так же, как и с идентификатором, но искать на основе имени пользователя.   -  person Blair McMillan    schedule 07.08.2010


Ответы (2)


Вы можете использовать функцию RewriteMap mod_rewrite, но у вас есть для хранения ваших пар id-username либо в текстовом файле, либо в файловой базе данных DBM. Имейте в виду, что для использования этой директивы вы должны сначала объявить ее внутри httpd.conf, поэтому требуются права доступа и записи в httpd.conf.

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

Если у вас достаточно пользователей, чтобы сделать использование DBM разумным выбором, вы можете попробовать использовать PHP функции DBA или создайте текстовый файл, как указано выше, и используйте утилиту Apache httxt2dbm, чтобы преобразовать его в базу данных (через exec() или что-то подобное).

RewriteMap также позволяет использовать внешнюю программу (скажем, сценарий PHP CLI) для возврата сопоставления URL-адресов, но это кажется излишним...

person djn    schedule 07.08.2010

Вы хотите создать правило, которое переписывает http://site.com/profile/FinalDestiny в http://site.com/profile.php?username=FinalDestiny, а затем выполняете запрос к базе данных в profile.php, чтобы найти идентификатор пользователя с этим именем пользователя.

person Lethargy    schedule 07.08.2010