2

比我有更多经验的人可以解释它是如何工作的链接(例如):

http://www.facebook.com/zuck  

我认为这与此相同

http://www.facebook.com/profile.php?id=4

我想“zuck”是一个 GET 类型的字符串,但我不明白我怎么能做同样的事情。

非常感谢您

4

3 回答 3

2

.htaccess 文件:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?id=$1 [L]
于 2012-03-03T14:13:00.993 回答
2

您可以使用 Apache 的mod_rewrite 模块轻松做到这一点:这是一种允许您指定为传入请求提供哪些内容的机制。例如,您可以在 .htaccess 文件中制定规则,如下所示:

RewriteRule (.*) index.php?req=$1

然后它将每个传入请求重定向到中央 index.php,您可以在其中解析请求的 URI(在您的示例中,req 变量将保存值“zuck”),然后您可以根据该信息提供一些内容(例如您可以在包含用户配置文件的数据库中查找“zuck”,获取与“zuck”值关联的 id,然后显示用户 #24 的配置文件)。

至少这是基本的想法。它通常被称为“URL 美化”或“友好 URL”或“SEO URL”,搜索这些术语,您会发现大量资源。

于 2012-03-03T14:13:30.207 回答
1

实际上,我不确定,但在我看来,facebook 可能会同时使用这两种方式来获取个人资料

我快速 .htaccess 以确保所有请求都到达同一页面。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?input=$1 [L]

现在,在 profile.php 中,它应该做一个简单的检查,比如

$input = $_GET['input'];

if(is_string($input)) {
 // then retrieve profile id, based on the string
}
//now either way you have an unique identifier at last
//
//
// use your logic further more
于 2012-03-03T14:19:51.843 回答