如何生成单独的页面网址?

时间:2013-11-13 18:04:46

标签: php

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

domain.com/view_works.php

但我的客户需要为每个用户分别设置页面网址。像这样:

如果用户名为user1

domain.com/user1_works.php

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

你的帖子有一个明显的缺点,一个理想的答案需要了解你的情况的很多细节。但是,我可以通过您提供的信息告诉您,您没有接触到我可以扩展的许多相关概念,以帮助您为自己找到一个好的解决方案。

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

RESTful api提出了一个很好的,统一的,直观的uri应该是什么样子。虽然我们不想在这里创建一个api ......但是值得考虑REST教给我们的原则。我不会在你的uri中使用动词。输入网址并转到该页面意味着用户打算查看某些内容,因此domain.com/view_works.phpdomain.com/works

会更有意义domain.com/someUserName/works

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

正如我所说,有很多选项,但至少只需使用preg_match将网址分解成碎片并将/users/的任何内容路由到users.php并让它成为谁/显示什么是比直接访问文件更好的方法,如view_works.php,使用uri中的动词,最后使用丑陋的文件扩展名。

答案 1 :(得分:0)

在.htaccess中你可以举几个例子:

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

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

答案 2 :(得分:0)

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

例如,您可以重写以便URL:

domain.com/user1_works.php

内部重定向到:

domain.com/works_user_handler.php?user=user1