使用mod_rewrite隐藏用户名

时间:2014-12-15 16:48:36

标签: php .htaccess mod-rewrite

我有一个网站,通过访问用户名和类别下列出的信息,为拥有帐户的用户提供各种信息。使用变量名称uc,网址如下所示:

www.originalwebsite.com/user.php?u=username&c=43

我希望用户定义的自定义域删除用户名变量或变量名称的任何证据。其他变量(如类别)可以保留。理想情况下,这会导致以下链接指向之前包含的链接:

www.customdomain.com/c=43

我的理由是,自定义域对于用户来说是唯一的,因此,将删除指定用户的需要(理论上,到目前为止还没有实际),以及从自定义域中呈现网站一种看起来像单个网站的方式,而不是像原始网站那样的门户网站。

我可以让www.customdomain.com/u=username&c=43工作,但我正在考虑使用自定义域(变量标识符和变量本身)时删除对用户名的引用的最佳方法。我很难想到如果在网址中没有提到用户帐户,我将如何通知原始网站。

目前,我最好的想法是让user.php处理此问题,条件是请求是来自 originalwebsite.com 还是自定义域。如果发现它是后者,它会根据数据库列表进行检查,并谨慎地查找相关的用户设置。然而,这感觉就像一个很慢的过程。

如果我的示例不清楚,请考虑像Tumblr这样的网站,您可以在其中添加自定义域名,从那时起,网址不会引用您的用户名。

1 个答案:

答案 0 :(得分:0)

通过这里的一些讨论和进一步的研究,似乎没有快速的方法来做到这一点。看起来我仍然坚持使用某种形式的引用来识别网址中的用户名,使用cookie或坚持我最初的想法是针对数据库引用自定义域以找到适当的用户和设置。

我已经使用了数据库引用选项,因为我需要从网址中删除对任何用户名的引用,我不能总是依赖于cookie。我需要100%的正确重定向成功率。

我已更改了user.php文件,以检查请求是来自originaldomain.com还是newdomain.com。如果它来自originaldomain.com,它会在网址中查找用户名变量,因为它应该为没有自定义域的任何用户提供一个用户名变量。如果它来自不同的域,它会检查数据库中是否列出了此域,并从中查找用户。有一些我需要试用的捕获量,但我已经解决了90%的问题。