-1

我正在为一家公司创建一个网站,php我需要为每个成员创建他的个人资料页面,例如 facebook 的 url

www.mywebsite.com/my.name

不是这样的:

www.mywebsite.com/?profile_id=65497

有任何想法吗 ??

4

1 回答 1

1

我假设您知道只有当您有一些将 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 中使用数据库查询。有关您可以使用 RewriteMaps 做什么以及如何操作的更多信息,请参见此处的手册: http ://httpd.apache.org/docs/2.4/rewrite/rewritemap.html

于 2013-03-08T13:07:08.327 回答