2015-10-25 60 views
0

我有以下網址:www.mydomain.com/musician.php?musician=musicianname & ID = IDNumber中mod_rewrite的隱藏URL字符串的最後一部分

我使用mod_rewrite來實現這一目標:WWW。 mydomain.com/musician/musicianname/idnumber

這是我使用的規則:

RewriteRule musician/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /musician.php?$musician=$1&id=$2 [L] 

這是工作得很好,但我想使這個URL更多ü ser友好。我想從url中隱藏「音樂家」和「idnumber」,並且只有「musicianname」:www.mydomain.com/musicianname/

什麼是最好的mod_rewrite規則來達到這個目的?

回答

0

這是工作得很好,但我想讓這個URL更友好的用戶 。我想隱藏「音樂家」和「idnumber」,地址爲 ,只有「musicianname」:www.mydomain.com/musicianname/

什麼是最好的mod_rewrite規則來達到這個目的?

這與獲取最佳重寫規則沒有任何關係。這並不難。爲了實現你想要的,你首先必須重新構建你的PHP代碼。如果您從查詢字符串中刪除idnumber,我認爲它不會在數據庫中查找記錄。因此,您必須讓代碼通過musicianname來查找數據。

一旦你這樣做,你可以簡單地改變你的重寫。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /musician.php?musician=$1 [L] 
+0

問題在於「musicianname」不是唯一的,所以我不能用它來查詢,否則我已經做到了。我沒有構建應用程序,但我正在實現新功能並對其進行改進,這就是爲什麼我需要更好的URL。最初的URL是www.mydomain.com/musician.php?id=musicianid。我已經改進了一下。註冊的目的不是爲了使用用戶名(我使用電子郵件),並且兩個用戶可能使用相同的名稱註冊。所以我不能使用「musicianname」來查詢數據庫。我只是試圖解決我之前所做的最好,最快的方式。 –

+0

然後,你將不得不在URL中使用idnumber。所以只需www.mydomain.com/musicianname/idnumber。用戶習慣於查看該類型的URL。它不像它很難或很長。看看stackoverlfows的URL,它們都有idnumber。沒什麼大不了的。 –

+0

當你的用戶要求把他們的URL像facebook一樣時,這是一件大事。他們是音樂家,而不是程序員,所以他們不關心更改URL的過程中涉及的複雜性。這就是我發佈這個問題的原因。 –