Как динамически переписать URL-адрес, такой как Facebook - PullRequest
0 голосов
/ 05 февраля 2011

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

website.com / profiles.php? ID = ххх

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

Тем не менее, артисты теперь просят веб-сайт website.com/artistname в качестве своего URL. Как и Facebook и Myspace, я думаю.

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

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

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

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

Спасибо

Ответы [ 4 ]

1 голос
/ 05 февраля 2011

Вы можете использовать ответ 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.(если это проблема)

1 голос
/ 05 февраля 2011

Вы можете использовать URL "slug", в результате чего запись имеет уникальное имя, то есть:

id     name             slug
001    Stack Overflow   stack-overflow

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

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

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

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

1 голос
/ 05 февраля 2011

Если вы не хотите, чтобы идентификатор в URL-адресе, имена исполнителей должны быть новыми и, следовательно, уникальными.

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

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

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

0 голосов
/ 05 февраля 2011

Во-первых, вам нужно изменить таблицу художников, добавив новый столбец для определения псевдонима для художников, например '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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...