我有一个网址
http://website.com/view/b2c32b2c782f65be2c299f7b38189a120fd51c89/
将用户定向到个人资料,即与用户相关的 ID。
是否有使用 php/.htacess/mysql 将此 id 替换为相对用户名的方法?
有什么解决办法吗?
我使用重写规则,以便将 URL 中的 id 解释为获取值:
RewriteRule ^view/([a-f0-9]{40})/$ ./view/index.php?profile_id=$1
最佳答案
我认为你应该考虑使用 RewriteMap 解决您的问题。
想想这个场景:最终用户请求 view/joe-soap/
. RewriteMap 会向服务器询问该用户的 ID,实际上请求 /view/b2c32b2c782f65be2c299f7b38189a120fd51c89/
, 基于响应。
为此,您需要创建一个 PHP 脚本,该脚本从 URL(由 RewriteMap 提供)中接受用户名,然后返回该用户的 ID。然后 RewriteMap 将允许您静默请求 view/index.php?profile_id=<retrieved_use_id_here>
.
我建议你read through the documentation由 Apache 的网站提供。以下是一些可以为您提供帮助的网站:
- Making sense of Rewritemaps in Apache
- mod_rewrite with RewriteMap: External Rewriting Program
- RewriteMap PRG By Example Using PHP For Apache Mod_Rewrite
但是:我建议,考虑到这会增加一个额外的请求,您只需使用 PHP 来获取 ID,然后在同一个请求中,从那里继续(正如其他人所建议的那样) .
关于php - 将 URL 中的 ID 替换为用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575304/