2010-03-08 71 views
0

我想一個簡單的幫助... 我有這樣一個網址: example.com/profile.php?id= &名=如何得到一個像Twitter網址

我的.htaccess文件這樣的。 ()?

重寫規則^資料/()/ profile.php ID = $ 1 &名= $ 16

,所以我有一個結束的網址是這樣的: example.com/profile/id/命名

我可以讓 example.com/id

,但我怎麼能得到這樣的網址:

example.com/name

??

thax

+0

你的意思是你希望你的網址只有名稱,但不包含ID? – 2010-03-08 13:15:35

回答

0

如果你正在尋找的究竟是什麼這樣的:

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 

希望這回答你的問題

+0

真的很好... THX所有... 真的真的... – fabio 2010-03-08 13:36:07

+0

我得到一個不正確的重定向頁面 我可以使用的RewriteCond的URL。 - - > profile.php?id = $ 1&name = $ 2 ?? profile.php確實需要「id」... thx – fabio 2010-03-08 13:58:49

1

顯然,你profile.php腳本需要二送變量,你想要的網址只有一個。所以你可能不得不改變腳本和數據庫模式。

1

您的重寫規則很微妙。您只會在每個括號內的部分中選擇一個字符。如果你在每個點之後放一個*,它會改爲選擇一個或多個字符,我認爲這是你需要的。

RewriteRule ^profile/(.*)/(.*) profile.php?id=$1&name=$2 
+0

這是事實,但並不完全回答這個問題。他正在尋找一條只有1個前鋒的路線。 – 2010-03-08 13:21:23

+0

哎呀 - 我的錯誤 - 誤讀的問題:( – iblamefish 2010-03-08 13:42:43

相關問題