我的网站最基本的形式是针对特定类型个人的网站。当一个人注册时,我想创建一个显示其个人资料的自定义页面(或至少是一个图像/外观)。目前,我使用PHP $_GET
参数来确定当用户导航到网站上相应脚本时要显示的配置文件。
为了更好的搜索引擎优化,我希望每个用户都有自己独特的链接;例如,FaceBook允许其用户拥有可以链接的自定义URL。如何在每个注册的新用户的目录中自动生成一个页面,并在用户更新他/她的详细信息时自动更新该页面?我知道.htaccess可能有一个潜在的进程,使用用户的名称/标题/等从数据库中提取他们的详细信息,但将其显示为唯一的URL。
任何人都可以提供此实施的建议或示例吗?我感谢任何帮助!
P.S。我想,一旦上述功能被整理出来,基于用户位置(即通过状态)对文件进行排序应该不那么困难。理想情况下,我喜欢这样的目录结构../users/state/user_name,其中state是用户的位置,user_name是它们的唯一名称。再次感谢!
答案 0 :(得分:1)
apache的.htaccess几乎没有工作 - 大部分逻辑都在php本身。 Apache只是将每个请求重定向到选定的脚本文件。
我假设您使用apache wid mod_rewrite。如果是这种情况,您应该将其添加到.htaccess文件中:
# check if mod_rewrite is present
<IfModule mod_rewrite.c>
#turns it on
RewriteEngine on
#if the requested url isn't a file or a dir
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#process index.php, no matter what was in the url
RewriteRule ^ index.php [L]
</IfModule>
(请注意.htaccess还必须具有覆盖apache当前设置的权限)
在index.php中,你可以查看被查询的URL并处理信息$whatTheUserRequested=$_SERVER['REQUEST_URI'];
$parameterArray=explode('/', $whatTheUserRequested);
//check the first param.
switch($parameterArray[1])
{
//if it was something like "thesite.com/main/fsadf/hgfdsgsdf/...."
case "main":
include "mainPage.php";
//....or do something else
break;
//if it was something like "thesite.com/login/asdfe/xxxx/...."
case "login":
include "loginPage.php";
//....or do something else
break;
default:
//here you MUST check if $parameterArray[1] is a username
if(check in db if $parameterArray[1] is user)
{
include "userPage.php";
}
else
{
include "pageNotFound.html"
};
}
您也可以查看附带的php中的第3或第4个参数,以处理网址,例如“mysite.com/johnny95/edit”
答案 1 :(得分:0)
您可以根据您希望的任何逻辑生成唯一网址。使用.htaccess重定向发送可在数据库中查询的参数。您可以找到有关here的信息。我会远离基于状态的目录结构 - 人们移动和移动目录似乎不值得努力。为简单起见,请保持平面目录结构
如果你看一下这篇文章的网址:questions / 23275736 / automated-create-custom-page-or-url-for-new-site-user-php,它们包括“问题”(可能是数据库表),“ 23275736“(可能是表键ID)和用户友好的字符串。我不确定,但我怀疑他们使用类似于附加链接的方法重定向.htaccess。
您还可以查看this post's answer以获取另一个使用斜杠重定向的示例。