我正在php
为公司创建一个网站,我需要为每个成员创建他的个人资料页面
喜欢facebook的网址
www.mywebsite.com/my.name
不喜欢这样:
www.mywebsite.com/?profile_id=65497
任何想法??
答案 0 :(得分: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