2012-02-11 70 views
1

目前我有這種格式的URL:轉換參數基於URL對漂亮的URL

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

這是好的。

但是,每個用戶可能有幾個'歌'與他們的帳戶相關聯。

URL的對單首歌曲的是這樣的:

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

與AT顯然是指在MySQL數據庫中的ID到底有多少。

使用jQuery/javascript,從URL中收集ID,然後查詢數據庫並呈現相關歌曲/頁面。

我想改變這些URL的以下格式來代替:

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

但我完全不知道如何去做。我一直在閱讀這個主題,但沒有發現任何與我的情況相關的東西。

爲了進一步加強挑戰,歌曲名稱並不總是唯一的。例如,如果我們對歌曲名稱'hello'進行圖像處理,則數據庫中可能存在另一首具有相同名稱的歌曲,儘管歌曲ID不同。

鑑於您在這個問題中收到的限制信息,我非常滿意於更廣義的答案,描述了要採取的方法。

一般信息:

  • 的Apache/Nginx的代理
  • 後端:PHP
  • 的jQuery/JavaScript的前端
+0

有關獨特性的快速問題。這些歌曲是否每個用戶都是唯一的,即使他們與數據庫中另一首歌曲的名稱相同? (即一個用戶不能有兩首叫做「hello」的歌曲) – Leigh 2012-02-11 11:02:40

+0

雖然他們目前沒有設置,他們可以沒有任何問題。 – gordyr 2012-02-11 11:14:27

回答

1

我不知道y怎麼辦ou在數據庫中存儲歌曲,但有一個想法:

使用URL重寫來重寫成員/用戶名/歌曲/歌曲名/到song.php?用戶=用戶名&歌曲=歌曲名。這裏有很多教程,或者嘗試使用URL rewrite-generator tool

在song.php中,獲取這些GET值。做一個MySQL查詢,歌曲名和用戶名匹配。輸出結果。

注意:使用戶只能存儲具有給定名稱的一首歌曲是一種義務。另外,存儲用戶的名字必須存儲。否則這是不可能的。

+0

這是一個夢幻般的想法,應該完美地工作。謝謝。我不敢相信我自己沒有想過!我想我只是有一些關於nginx重寫的閱讀。 – gordyr 2012-02-11 11:04:36

+0

必須設置song.php來處理存在多個「歌名」實例的情況。最好的辦法是輸出一個用戶點擊的列表,然後獲取實際的歌曲。 – Dayo 2012-02-11 16:56:51

1

Simple Apache rewrites,在主httpd.conf文件,或者一個htaccess文件如果你沒有訪問主配置文件應該足夠了

+0

感謝danwellman,這也是我的初衷,但是我的印象是,由於使用nginx作爲代理,簡單的apache重寫將不起作用? – gordyr 2012-02-11 11:00:48

+0

此問題的答案可能有所幫助:http://stackoverflow.com/questions/6825111/nginx-rewrite-url-replacement-for-apache-rewrite – danwellman 2012-02-11 11:03:35

+0

@gordyr:你目前如何處理/ members/username/path ,它是一個物理目錄,還是你正在重寫? – Leigh 2012-02-11 11:04:49