我想一個簡單的幫助... 我有這樣一個網址: example.com/profile.php?id= &名=如何得到一個像Twitter網址
我的.htaccess文件這樣的。 ()?
重寫規則^資料/()/ profile.php ID = $ 1 &名= $ 16
,所以我有一個結束的網址是這樣的: example.com/profile/id/命名
我可以讓 example.com/id
,但我怎麼能得到這樣的網址:
example.com/name
??
thax
我想一個簡單的幫助... 我有這樣一個網址: example.com/profile.php?id= &名=如何得到一個像Twitter網址
我的.htaccess文件這樣的。 ()?
重寫規則^資料/()/ profile.php ID = $ 1 &名= $ 16
,所以我有一個結束的網址是這樣的: example.com/profile/id/命名
我可以讓 example.com/id
,但我怎麼能得到這樣的網址:
example.com/name
??
thax
如果你正在尋找的究竟是什麼這樣的:
example.com/name
你需要改變你的profile.php只期望名稱變量,並使用它來查詢數據庫。
我相信以前你有這樣的事情:
mysql_query("SELECT * from table where id=$id");
你需要改變它是
mysql_query("SELECT * from table where name$name");
所以你告訴你的頁面通過姓名查詢用戶,而不是由ID。
與此有關的一些缺點,因爲你的查詢不會像以前那樣快,因爲我相信你的名字列不是主鍵,因此沒有索引。
Twitter使用Rails的,所以他們會在使用像一個稍微不同的方式來調用它(onMissingMethod):
get_user_by_username()
這是不算很好,因爲它仍然是一個字符串查詢數據庫,但有一些性能改進可以讓rails做到這一點。
那麼你的htaccess將looki像:
RewriteRule ^(.*) profile.php?name=$1
希望這回答你的問題
顯然,你profile.php腳本需要二送變量,你想要的網址只有一個。所以你可能不得不改變腳本和數據庫模式。
您的重寫規則很微妙。您只會在每個括號內的部分中選擇一個字符。如果你在每個點之後放一個*,它會改爲選擇一個或多個字符,我認爲這是你需要的。
RewriteRule ^profile/(.*)/(.*) profile.php?id=$1&name=$2
這是事實,但並不完全回答這個問題。他正在尋找一條只有1個前鋒的路線。 – 2010-03-08 13:21:23
哎呀 - 我的錯誤 - 誤讀的問題:( – iblamefish 2010-03-08 13:42:43
你的意思是你希望你的網址只有名稱,但不包含ID? – 2010-03-08 13:15:35