【问题标题】:Allowing username extensions for your website (ie, http://example.com/someusername)允许为您的网站扩展用户名(例如,http://example.com/someusername)
【发布时间】:2012-12-01 22:49:29
【问题描述】:

我正在开发一个社交网站。我想做的事情是让用户的用户名出现在我的网站名称之后……比如 example.com/myusername。我知道我可以使用 $_GET 变量来做一些事情,它看起来像 example.com/?u=myusername,但我们认为在域之后只使用用户名会看起来更干净,并且更易于用户导航。

提前致谢,

JS

【问题讨论】:

  • 什么网络服务器?有很多可用的示例。
  • 我建议您使用example.com/user/username - 这样对用户名的限制较少,因为用户可能希望使用404index.html 等名称。
  • 现在,我使用单个 IIS 服务器...今天或明天我将切换到在 ubuntu 服务器 12.04 上使用 apache httpd 和 php5 的分布式站点

标签: php mod-rewrite url-rewriting


【解决方案1】:

您可以设置一个重写规则,将所有不存在的请求定向到您的index.php(或者您想要使用的任何脚本)。然后只需检查$_SERVER['REQUEST_URI'] 并取出用户名。

这是一组基本的重写规则(适用于 apache):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

在你的情况下:

$requestParts = explode('/', $_SERVER['REQUEST_URI'];
$username = $requestParts[0];

这将允许您也使用:example.com/username/posts/newest,并拉出各种“部分”。

【讨论】:

    【解决方案2】:

    如果您使用的是 apache,请查找 mod_rewrite。
    如果您使用的是 IIS,请阅读此处:mod_rewrite equivalent for IIS 7.0

    使用其中之一来解析调用 URL 并为您的页面构建变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2011-07-10
      • 2017-02-11
      • 2017-11-13
      • 2012-02-07
      相关资源
      最近更新 更多