我有一个小系统。用户可以登录查看工作记录。该页面URL就是这样的
domain.com/view_works.php
但我的客户需要为每个用户分别设置页面网址。像这样:
如果用户名为user1
domain.com/user1_works.php
我怎样才能做到这一点?
答案 0 :(得分:2)
你的帖子有一个明显的缺点,一个理想的答案需要了解你的情况的很多细节。但是,我可以通过您提供的信息告诉您,您没有接触到我可以扩展的许多相关概念,以帮助您为自己找到一个好的解决方案。
此处的其他答案建议使用重写规则。我不推荐。这可能是一个懒惰/ hacky解决方案,而不是一个理想的做法。通常建议您将所有请求路由到一个php文件,并让您的php逻辑将请求路由到它所属的位置。也就是说,第一步是创建或使用现有的php系统将请求路由到用户的特定处理程序。
RESTful api提出了一个很好的,统一的,直观的uri应该是什么样子。虽然我们不想在这里创建一个api ......但是值得考虑REST教给我们的原则。我不会在你的uri中使用动词。输入网址并转到该页面意味着用户打算查看某些内容,因此domain.com/view_works.php
或domain.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