如何得到一个像Twitter网址

问题描述:

我想一个简单的帮助... 我有这样一个网址: 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

如果你正在寻找的究竟是什么这样的:

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

显然,你profile.php脚本需要二送变量,你想要的网址只有一个。所以你可能不得不改变脚本和数据库模式。

您的重写规则很微妙。您只会在每个括号内的部分中选择一个字符。如果你在每个点之后放一个*,它会改为选择一个或多个字符,我认为这是你需要的。

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

这是事实,但并不完全回答这个问题。他正在寻找一条只有1个前锋的路线。 – 2010-03-08 13:21:23

+0

哎呀 - 我的错误 - 误读的问题:( – iblamefish 2010-03-08 13:42:43