我经历了一些类似的帖子, Facebook Like Custom Profile URL PHP
Custom URL / Apache URL Rewriting
但它仍然不清楚,实际的方法/过程不可用.. 伙计们,更多的指导会做很多事情。
我想在此提出问题:
用户应该有机会决定他们的网址是什么,就像fb,twitter一样 例如:www.facebook.com/harry.inaction
我正在使用linux,apache,mysql,php环境。
根据用户ID在加入时自动创建
我在第一步就失败了,认真地说我不知道如何开始。
由于
答案 0 :(得分:1)
将任何细节都作为答案是不可能的,因为你必须构建你的这个系统,并且有不止一种方法可以做到这一点。设计决策需要根据您希望工作的方式和您已经拥有的东西(他们必须以某种方式合作)来制定。
假设您已经拥有一个用于创建用户的系统(听起来就像您这样做)并且您已经拥有一个用于查看配置文件的系统。您需要扩展此系统,以便在数据库的用户表中存储额外的“my_vanity_url”字段。该字段必须是唯一的。当用户编辑他们的个人资料时,他们可以选择将其更改为他们想要的任何内容(为简单起见,仅将其限制为字母,数字和短划线)。
接下来,当您显示此个人资料时,请说明是通过/profile.php
,您的代码需要检查一些内容。
$_SERVER['REQUEST_URI']
您可以看到/user/some-vanity-name
或/profile.php?u=1234
。1234
的用户是谁。/user/my_vanity_url_value
(将my_vanity_url_value
替换为该列的值。)现在,如果您转到 http://your.domain.com/profile.php?u=1234 ,您的浏览器会被重定向,并且网址地址栏会显示 http ://your.domian.com/user/my_name 强>
接下来,您需要能够获取该唯一名称并将其转回旧丑陋的个人资料页面。这里需要做两件事:
profile.php
以获取可选的虚荣名称而不是user_id /profile.php
首先,您只需查找不同的$_GET[]
参数,而不是user_id的参数。假设它被称为name
:所以请查看$_GET['name']
,查看它是否存在,是否在用户表中查找其虚名网址名称为$_GET['name']
的用户。返回该用户的个人资料。
第二件事,你只需将它放在文档根目录中的htaccess文件中的适当位置:
RewriteEngine On
RewriteRule ^/?user/([A-Za-z0-9-]+)/?$ /profile.php?name=$1 [L]
这只是如何实现这样的事情的一个例子。它可能完全不适用于你拥有的东西,但它应该让你知道你需要做什么。