【问题标题】:How to add a URL based on the username of the account如何根据帐户的用户名添加 URL
【发布时间】:2016-11-19 23:30:02
【问题描述】:

我应该如何根据用户的用户名创建一个 url?
有人可以帮我解决代码和 .htaccess 配置吗?

users.com/usernamehere

如果您想在 Github 上查看它
如果你想在live website上查看它

信息
如果我的用户想查看他的页面,他会去“users.com/hisusername”。该链接将 获取 他的用户名并显示有关他的帐户的信息,并且 .htaccess 将具有重写规则(我猜?)。有人可以帮我写代码吗?

建议
我在一些教程中看到过这个但我不能按照他们,所以如果页面有“?username=usernamehere”的标签,用户是将被重定向到“usernamehere”页面。
示例:用户在“users.com/profile.php?username=Stackoverflow”上,用户将被重定向到:“users.com/users/Stackoverflow”。这有可能发生吗?谢谢,祝你有美好的一天:)

【问题讨论】:

  • 您的 Q 需要更多信息。将其改写为更精确的内容,例如“重写URL_1 所需的.htaccess 规则是什么,所以它看起来像URL_2”,或“我的用户页面位于URL_1,但我希望用户通过@ 访问它987654331@;我怎么能用.htaccess做到这一点?"
  • 好的,谢谢,会更新它以获取更多信息:)

标签: php .htaccess get


【解决方案1】:

用户在users.com/profile.php?username=Stackoverflow 和 用户将被重定向到:users.com/users/Stackoverflow。任何 这有可能发生吗?

注意:尽管此引用表明相反,但下面的答案假定您希望用户在 URL 栏中输入 users.com/users/Stackoverflow

将一个名为.htaccess 的文件放在您网站的文档根目录(包含您的网站文件的最高目录,通常称为public_htmlwww)添加以下规则

RewriteEngine on
RewriteBase /

RedirectRule ^users/(.*)  /profile.php?username=$1  [END,NC]

NC 标志使比较不区分大小写。这意味着users/StackUSERS/Stack 都将被重定向。如果您想要区分大小写的比较,请将其删除

END 标志告诉服务器停止寻找更多重定向规则。基本上它确保/profile.php?username=... 是该请求的最终目的地。

附录

如果您确实想将客户重定向到相反的方向,请改用此规则

RedirectRule ^profile.php?.*username=([^&$]+)  /users/$1  [END,NC]

如果路径 /users/name 不是真实文件,这可能会给您带来问题

【讨论】:

  • END标签有什么作用?
  • 查看我的更新 :-)。另外,我没有在这里使用它,因为它不适用于您的具体示例,但如果您的脚本依赖于 $_GET 参数,我会添加 QSA 标记。 QSA 标志告诉服务器将所有查询字符串参数传递给最终脚本。例如,users/joe?name=value 将变为profile.php?username=joe&name=value。如果没有QSA 标志,查询参数将被丢弃
  • 哦,谢谢 :) 我只有 13 岁,从这里开始 PHP 编程,如果我问废话,我很抱歉,因为我是这里的新手 :D(现在我的网站没有响应)。
  • 没有问题。编码愉快。
  • 如果用户直接输入链接而不是使用 GET,这是否有效?示例:乔输入 users.com/users/joe - 而不是 users.com/profile.php?username=joe
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 2016-04-17
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
相关资源
最近更新 更多