【问题标题】:Automatically Create Custom Page (or URL) for New Site User - PHP为新站点用户自动创建自定义页面(或 URL) - PHP
【发布时间】:2023-03-14 16:19:01
【问题描述】:

我的网站最基本的形式是为特定类型的个人提供的网络站点。当个人注册时,我想创建一个自定义页面(或至少一个图像/外观)显示他们的个人资料。目前,我正在使用 PHP $_GET 参数来确定当用户导航到网站上的相应脚本时要显示哪个配置文件。

为了更好的 SEO,我希望每个用户都有自己独特的链接;例如,FaceBook 允许其用户拥有可以链接的自定义 URL。如何在目录中为每个注册的新用户自动生成一个页面,并在用户更新他/她的详细信息时自动更新该页面?我知道 .htaccess 可能存在一个潜在的过程,使用用户的姓名/职务/等从数据库中提取他们的详细信息,但将其显示为唯一的 URL。

任何人都可以提供建议或实施示例吗?感谢您的任何帮助!

附:我想一旦上述功能得到整理,根据用户的位置(即按状态)对文件进行排序应该不会那么困难。理想情况下,我想要一个目录结构,例如 ../users/state/user_name,其中 state 是用户的位置,而 user_name 是他们的唯一名称。再次感谢!

【问题讨论】:

  • 您可以根据您希望的任何逻辑生成唯一的 url。使用.htaccess 重定向发送可以在您的数据库中查询的参数。您可以找到有关如何使用here 的信息。我会远离基于状态的目录结构——人们移动和移动目录似乎不值得付出努力。为简单起见,保持平面目录结构。
  • 感谢@mseifert 的回复。这是否类似于 StackOverflow 处理问题 URL 的方式?
  • 我已经回复了答案。见下文。

标签: php mysql .htaccess web-applications social-networking


【解决方案1】:

您可以根据您希望的任何逻辑生成唯一的 url。使用 .htaccess 重定向发送可以在数据库中查询的参数。您可以找到有关如何使用here 的信息。我会远离基于状态的目录结构——人们移动和移动目录似乎不值得付出努力。为简单起见,保持平面目录结构

如果您查看这篇文章的网址:questions/23275736/automatically-create-custom-page-or-url-for-new-site-user-php 它们包括“问题”(可能是数据库表),“ 23275736"(可能是表键 ID)和用户友好的字符串。我不确定,但我怀疑他们使用 .htaccess 重定向,其方法类似于附加链接中的方法。

您还可以查看 this post's answer 以了解另一个使用带有斜杠的重定向的示例。

【讨论】:

  • 我可以看到他们将如何使用密钥 ID 提取相关详细信息,但他们如何允许搜索引擎索引这些包含问题标题的问题?他们只是缓存所有问题吗?谢谢!
【解决方案2】:

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”之类的 url

【讨论】:

  • 大多数大型网站都是这样吗?我想尽量减少处理 URL 所需的加载量。另外,我如何确保这些链接被搜索引擎索引,即这种方法是否允许我显示所有用户?理想情况下,如果有人搜索它,我希望带有用户名的 URL 出现在搜索结果中。感谢您的帮助!
  • 搜索引擎只看到脚本生成的输出,因此他们将“site.com/johnny95”视为一个单独的页面。为了帮助他们索引您的站点,构建站点地图(您可以使用 php 生成)、robots.txt、添加相关元标记等等。
  • 对于大多数大型网站 - 可能取决于网站,但原则是这样 - 获取用户输入的任何 url,并根据它构建一个页面(编辑:在极少数情况下,他们可能将浏览器重定向到不同的网址)。
  • 感谢@user1328370的帮助
  • 这正是我想要的!!谢谢!!
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多