Как динамически переписывать URL как Facebook

Я написал свой сайт с использованием PHP, и, к сожалению, в настоящее время профиль Artist выглядит следующим образом:

website.com/profiles.php?id=xxx

Таким образом, я могу получить идентификатор и запросить базу данных.

Тем не менее, теперь художники просят URL-адрес website.com/artistname. Как и Facebook и Myspace, я думаю.

Мне все же нужно иметь возможность установить идентификатор художников, так что я могу запросить базу данных.

Я предполагаю, что мне придется использовать mod_rewrite, а также запустить функцию php, но я точно не знаю, как это сделать!

Я потратил последний день на поиск в Интернете, чтобы найти что-то подобное, но я не могу найти то, что хочу!

Если у кого-нибудь есть идеи о том, как я могу это сделать, или примеры, которые помогут мне, это было бы здорово!

благодаря

Вы можете использовать URL-адрес «slug», в котором запись имеет уникальное имя, то есть:

id name slug 001 Stack Overflow stack-overflow 

то вы можете выполнить запрос, например:

 SELECT `fields` FROM `table` WHERE `slug`='$slug' 

где slug – это значение из URL-адреса.

Есть альтернативы, поскольку я уверен, что они будут предоставлены.

Вы можете использовать ответ Gumbo, но у вас также есть один возможный ярлык:

Вы также можете перенаправить URL / artistname на /profiles.php?id=xxx с помощью обработчика 404

Вот как вы это сделаете:

  1. создать файл с именем /router.php
  2. Измените файл .htaccess и добавьте в него эту строку: ErrorDocument 404 /router.php
  3. Сделайте router.php поиск идентификатора исполнителя и перенаправление на /profiles.php?id=xxx – если ничего не найдено, router.php может перенаправить на другую страницу 404 или сделать сообщение заголовка 404 +

Хорошая вещь об этом методе заключается в том, что вам не нужно включать mod_rewrite. (если это проблема)

Если вам не нужен ID в URL, имена артистов должны быть новым ID и, таким образом, уникальными.

В этом случае вы можете сделать следующее в файле .htaccess в корневом каталоге вашего документа, чтобы переписать /<artistname> внутренне в /profiles.php?name=<artistname> :

 RewriteEngine on RewriteRule ^([az]+)$ profiles.php?name=$1 

Здесь имя исполнителя также ограничивается только буквенными буквами. Для других символов (особенно . И / ) вы должны учитывать, чтобы не допускать конфликты с существующими файлами (например, profiles.php ). И если вы выведете имена артистов URL из их настоящих имен, не забудьте также разрешить конфликты. В этом случае вам все равно понадобится искусственный идентификатор, чтобы сделать URL-адрес уникальным.

Во-первых, вам нужно изменить таблицу своих художников, добавив новый столбец для определения псевдонима для артистов, например, «david-matthews-band», создайте индекс, уникальный для предотвращения путаницы с художниками-омонимами.

Вам нужно отредактировать файл profile.php, чтобы найти художников по псевдониму, например website.com/profile.php?q=david-matthews-band

Создайте правило перезаписи для преобразования website.com/profile/david-mattews-band на website.com/profile.php?q=david-matthews-band:

 RewriteEngine On RewriteRule ^profile/* profile.php?q=$1