如何重写配置文件URL没有.htaccess,在PHP


How to rewrite profile URL without .htaccess, in PHP?

我正在用PHP构建一个路由器。我想知道如何绘制/配置文件?Id =3 ~/user/3。有没有办法在PHP中做到这一点,没有。htaccess?

您可以做的是创建一个基本入口点来捕获所有url,例如在Symfony中。

这个入口点可以是项目根目录下的app.php文件。您可以通过http://yourdomain.com/app.php/user/3这样的url访问它。

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

然后,在apache配置中创建一个重写规则,该规则将在所有url前面加上app.phphttp://yourdomain.com/user/3将被apache映射到http://yourdomain.com/app.php/user/3

这样一个重写规则的例子可以在这里找到。

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

URL需要从缩短的形式重写为要传递给PHP的查询字符串。你不能在PHP中接受/user/3,因为它不会在$_GET超全局数组中填充。

你不需要把重写规则放在。htaccess文件中,因为它们是每个目录继承的。但是你仍然需要mod_rewrite

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