-1

我有一个小系统。用户可以登录查看工作记录。该页面网址是这样的

domain.com/view_works.php

但是我的客户需要为每个用户提供单独的页面 URL。像这样的东西:

如果用户名是user1

domain.com/user1_works.php

我怎样才能做到这一点?

4

3 回答 3

2

您的帖子有一个明显的弱点,即理想的答案需要了解很多关于您的情况的细节。但是,我可以从您提供的信息中看出,您还没有接触过很多相关的概念,我可以扩展这些概念来帮助您找到适合自己的解决方案。

这里的其他答案建议使用重写规则。我不建议这样做。这可能是一个懒惰/hacky 的解决方案,而不是理想的做法。通常建议您将所有请求路由到一个 php 文件,并让您的 php 逻辑将请求路由到它所属的位置。也就是说,第一步是创建或使用您现有的 php 系统将请求路由到用户的特定处理程序。

RESTful api 提出了很多关于漂亮、统一和直观的 uri 应该是什么样子的建议。虽然我们不打算在这里创建一个 api……但值得考虑的是 REST 教给我们的原则。我不会在你的uri中使用动词。输入 url 并转到该页面意味着用户打算查看某些内容,因此更有domain.com/view_works.php意义domain.com/worksdomain.com/someUserName/works

具体实施真的取决于许多因素。根据内容domain.com/包含的内容,类似的内容domain.com/users/someUserName/works可能是更好的选择。你可以从那里做的是让你的主index.php文件(所有请求都被路由到的文件)解析 uri,以便你知道你需要将请求发送到users控制器,控制器可以选择someUserName并显示该用户的works.

正如我所说,有很多选项,但至少简单地使用preg_match将 url 解析成片段并使用 to 路由任何内容/users/users.php让它计算出显示谁/什么将是比直接访问文件更好的方法,例如view_works.php,使用动词 in最后带有丑陋文件扩展名的uri。

于 2013-11-13T18:25:59.130 回答
0

在 .htaccess 中,您可以将其放在例如:

RewriteRule ^user([0-9]*)/works$ /view_works.php?userid=$1 [L]

这将导致yoursite.com/user123/works转到view_works.php?userid=123

于 2013-11-13T18:10:32.003 回答
0

如果您使用 Apache 作为 Web 服务器,您可以使用它的重写引擎来实现此功能。有了它,您可以在内部将您希望的任何 URL(使用正则表达式定义)重定向到任何 PHP 脚本,并将正则表达式的任何部分作为脚本的参数传递。

例如,您可以重写 URL:

domain.com/user1_works.php

内部重定向到:

domain.com/works_user_handler.php?user=user1
于 2013-11-13T18:11:00.383 回答