Преобразование URL-адресов на основе параметров в красивые URL-адреса - PullRequest
1 голос
/ 11 февраля 2012

В настоящее время у меня есть URL в этом формате:

http://www.domain.com/members/username/

Это хорошо.

Однако каждый пользователь может иметь несколько «песен», связанных с его учетной записью.

URL-адрес для отдельной песни выглядит следующим образом:

http://www.domain.com/members/username/song/?songid=2

С номером в конце, очевидно, ссылающимся на идентификатор в базе данных MySQL.

Используя jQuery / javascript, идентификатор берется из URL, а затем запрашивается база данных и воспроизводится соответствующая песня / страница.

Я бы хотел изменить эти URL на следующий формат:

http://www.domain.com/members/username/song/songname/

Но я абсолютно не знаю, как это сделать. Я довольно много читал на эту тему, но не нашел ничего, имеющего отношение к моей ситуации.

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

Учитывая предельную информацию, которую вы получаете в этом вопросе, я вполне удовлетворен более обобщенными ответами, описывающими подход, который нужно использовать.

Общая информация:

  • Apache / Nginx прокси
  • Бэкэнд: PHP
  • jQuery / Javascript интерфейс

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Я не знаю, как вы храните песни в базе данных, но идея:

использовать перезапись URL для перезаписи членов / имени пользователя / песни / имени песни / в song.php? User = имя пользователя & песни = имя песни.Здесь есть множество руководств или, возможно, попробуйте использовать инструмент перезаписи URL-генератора .

. В song.php получите эти значения GET.Выполните запрос MySQL, где имя песни и имя пользователя совпадают.Выведите результат.

Примечание: ОБЯЗАТЕЛЬНО сделать так, чтобы пользователь мог сохранить только одну песню с заданным именем.Кроме того, имя пользователя ДОЛЖНО быть сохранено.Иначе это невозможно.

1 голос
/ 11 февраля 2012

Простой Apache переписывает в основном файле httpd.conf или в файле htaccess, если у вас нет доступа к основному файлу конфигурации, должно быть достаточно

...