关于修改网址的mod_rewrite问题

时间:2010-02-18 16:11:43

标签: php apache .htaccess mod-rewrite

我终于在某种程度上得到了mod_rewrite规则,但是想用它做更多的事情并且不确定如何。这是我现在拥有的:

RewriteRule ^rider/(.*)/(.*)*$ /bar/standings/rider.php?lnum=$1&short=$2

这允许我这样做:

http://pca.localhost/rider/214142/sme 
instead of 
http://pca.localhost/bar/standings/rider.php?lnum=214142&short=sme

这一切都很好,花花公子,但我想更多地改进它,所以它会是:

http://pca.localhost/rider/fred/flinstone

但是,我需要传递lnum变量,因为它是唯一真正的id键(即它们可能是db中名为fred flinstone的两个人)。短变量并不重要。我的目标是以某种方式传递名称而不显示lnum变量。有没有办法做到这一点?我能以某种方式隐藏lnum变量吗?或者,我需要做一些光滑的php / mysql工作吗?

欢迎任何建议,意见或建议。

3 个答案:

答案 0 :(得分:2)

客户在访问网站时获得的唯一密钥是网址。如果URL没有唯一标识要查看的页面,那么您必须显示某种消歧页面,或者您必须放弃这个想法。

答案 1 :(得分:0)

您可以尝试在注册时为用户生成唯一ID,并在整个过程中使用它。例如fred flinstone

唯一ID = fred(如果没有fred已存在) 唯一的id = fred-flinstone(如果已经有fred存在) unique id = fred-flinstone1(如果已经存在fred flinstone)

这种逻辑。

答案 2 :(得分:0)

如果您必须首先从数据库中获取ID,为什么不在cookie中使用会话ID?或者会话ID为GET或POST参数(即带有隐藏的表单字段)。

无论如何,公开这样的用户ID是不安全的。使用“随机”ID,如会话ID,并将其链接到用户ID。