【问题标题】:Clean the URL like of Google+像 Google+ 一样清理 URL
【发布时间】:2016-05-15 17:06:16
【问题描述】:

对不起,这么简短的标题。我想知道 Google+ 是如何让用户 URL 变得如此简洁的。我的意思是:
https://plus.google.com/+PuruVijay


会带我到我的页面。我想知道 + after/ 是如何放置的以及它是如何加载相应页面的。我想要一个数据库来获取 URL。 URL 实际上应该是这样的
加号。谷歌。 com/user?id=134566

寻找好的答案请帮忙

编辑: 一个例子是这个页面的 URL

【问题讨论】:

  • 这太宽泛了,没有关于您的服务器设置的任何细节。有很多方法可以做到这一点,但这取决于您使用的是什么。
  • @whrrgarbl 它的 localhost Apache 到现在,但如果它可以用 php 或 JavaScript 来完成,那就太好了
  • 好的,知道这一点很重要。您应该编辑您的问题以反映这一点并添加一个标签,以便人们可以找到它。

标签: database apache url localhost google-plus


【解决方案1】:

在评论中您说您正在使用 Apache 服务器。处理此类 URL 操作的典型方法是模块 mod_rewrite,您可以在 here 上找到文档。这使用正则表达式来匹配 URL 并指向另一个。例如,/~user 到 /u/user 的规则是

RewriteRule    ^/~([^/]+)/?(.*)    /u/$1/$2

对于 Google+ 示例,您说您想将 /+PuruVijay 翻译成 /user?id=134566。这会稍微复杂一些,因为给定的 URL 不包括用户 ID,因此您必须以其他方式检索该号码。但是,您可以使用mod_rewrite 重定向到/user?name=+PuruVijay。这看起来像(未测试!

RewriteRule    ^/\+(.*)    /user?id=$1

然后,您的user 页面可以获取id 参数并在数据库中查找以显示正确的页面,同时允许用户输入易于记忆的 URL。

PuruVijay134566 的映射而言,Google+ 要求自定义 URL 是唯一的,因此句柄 PuruVijay 和用户 ID 号 134566 之间存在 1-1 对应关系。否则,将不可能在给定自定义 URL 的情况下查找特定的 ID 号。如果您决定允许这样的自定义句柄,您的网站必须设置类似的限制。

【讨论】:

  • 其实我想知道如何将 user.php?id=45677 转换为 /users/3556543。不要把身份证当回事
  • 在这种情况下,您只需切换规则,例如 ^/user.php?id=(\d+) /users/$1 将 /user.php?id=1234 映射到 /users/1234。但是要让浏览器从 /user.php?id=1234 转到 /users/5678,您需要进行一些服务器端处理以找到另一个号码,然后将其重定向到新页面。
【解决方案2】:

您也可以这样做...只需要创建名称文件夹 例如http://yoursite.com/PuruVijay

这里 PuruVijay 是您需要在网站目录中创建的文件夹.. 并将索引文件放入该文件夹中

【讨论】:

  • 可怕的想法。我不能只为每个用户创建一个完整的文件夹。我只需要从数据库中获取价值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2016-11-30
  • 2017-02-06
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多