2013-03-07 72 views
-1

我在php創造了一個公司網站,我需要創建到每一個成員他的個人資料頁面 喜歡Facebook的URL名稱PHP的分析與網址「mod_rewrite的」

www.mywebsite.com/my.name 

不喜歡這樣的:

www.mywebsite.com/?profile_id=65497 

有什麼想法?

+0

什麼:你可以用RewriteMaps做什麼更多信息,以及如何做到這一點可以在這裏使用手冊中找到d但仍試圖 – ArsanGamal 2013-03-07 23:18:07

+2

像[先前的研究(http://www.google.com /search?q=site:stackoverflow.com+php%20mod_rewrite%20user%20name%20instead%20of%20profile%20id)? – mario 2013-03-07 23:19:07

+0

:)請注意,有一個名爲谷歌的網站。我發現這個:http://wettone.com/code/clean-urls – hek2mgl 2013-03-07 23:20:23

回答

1

我asume你知道,這隻能做,如果你有一些源映射id名稱。 mod_rewrite可以在查找表中查找字符串並將結果用於替換。

例如,假設您有一個包含id映射名稱的文件。

# Mapping of names to UserIDs 
Bill.Gates 100 
Barack.Obamaq 101 
Arsan.Gamal 102 

然後,您可以添加以下到你的Apache配置:

RewriteEngine On 
RewriteMap UserIDs txt:/path/to/userids.txt 
RewriteRule /(.*) /?profile_id=${UserIDs:$1|NOTFOUND} [PT] 

現在,當一個請求到來的/Bill.Gates的/後的部分在正則表達式反向引用被捕獲,並用在userids.txt中查找一個值。這個值比你在替換中使用的要多。

還有其他的可能性。如果您的用戶名和ID存在於數據庫中,則可以在RewriteMap中使用數據庫查詢。 http://httpd.apache.org/docs/2.4/rewrite/rewritemap.html