如何在PHP中重写没有.htaccess的概要文件URL?

如何在PHP中重写没有.htaccess的概要文件URL?,php,url-routing,Php,Url Routing,我正在用PHP构建一个路由器。我想知道如何将/profile?id=3映射到/user/3。在没有.htaccess的PHP中有什么方法可以做到这一点吗?URL需要从该缩写形式重写为要传递给PHP的查询字符串。您不能以任何方式接受PHP中的/user/3,因为它不会填充在$\u GET superglobal数组中 您不需要将重写规则放入.htaccess文件中,因为它们是按目录继承的。但你仍然需要修改 当您使用PHP时,我假设您没有在CLI上运行它,因此您必须使用Apache或Nginx。在这

我正在用PHP构建一个路由器。我想知道如何将/profile?id=3映射到/user/3。在没有.htaccess的PHP中有什么方法可以做到这一点吗?

URL需要从该缩写形式重写为要传递给PHP的查询字符串。您不能以任何方式接受PHP中的/user/3,因为它不会填充在$\u GET superglobal数组中

您不需要将重写规则放入.htaccess文件中,因为它们是按目录继承的。但你仍然需要修改


当您使用PHP时,我假设您没有在CLI上运行它,因此您必须使用Apache或Nginx。在这种情况下,运行mod_rewrite并将规则放入配置中有什么问题?

您可以创建一个基本入口点来捕获所有URL,例如

该入口点可以是项目根目录下的
app.php
文件。您可以通过类似
http://yourdomain.com/app.php/user/3

此入口点将使用
app.php
之后的URL部分来调用相应的控制器,提取用户ID并呈现HTML

然后,在apache配置中,创建一个重写规则,该规则将在所有URL前面加上
app.php
<代码>http://yourdomain.com/user/3将由apache映射到引擎盖下的
http://yourdomain.com/app.php/user/3

可以找到这样一个重写规则的示例


之后,如果您想支持其他路由,比如
/myblog/great entry
或其他任何路由,您可以从PHP端处理它们。您不必再编辑apache配置,因为每个URL都被
app.php
文件捕获。

您需要htaccess来重写URL。您不能以其他方式执行。是的,将重写规则放在vhost配置中,而不是您确定吗?我正在使用MVC模式,将所有请求重定向到index.php,并要求路由器在其后面包含所有查询字符串。我想让用户尽可能容易地重写URL@machineaddict@PeeHaa在vhost中?你能举个例子吗?@PeeHaa:这个操作可能是因为用户没有创建htacess文件的权限。没有问题,我只是希望将来重写URL很简单,而不必制定重写规则。你可以做的是创建一个基本入口点,捕捉所有URL,例如。您只需在apache配置中设置一条规则;)好的,我想我现在明白了。我会创建一个路由器的实例,并希望通过带有占位符的页面,比如说ID。然后我会显示页面@EliotBerriot@user3660432,有关详细信息,请参阅我的anwser(评论太短)