我目前正在构建一个简单的 MVC 框架,并且在分解本地主机上的 URL 以及让它在实时生产服务器上工作方面遇到了一些障碍。
所以基本上,我的本地主机 URL 是:
localhost/project/public/controller/action
实时版本将是:
www.example.com/controller/action
我最初的想法是只使用 $_SERVER['REQUEST_URI'] 它将在实时服务器上完美运行,但在我的本地主机上它会返回:
/project/public/controller/action
我需要的是:
controller/action
我已经四处搜索,我能找到的唯一答案是设置一个我真的不想做的虚拟主机 - 这段代码将在可能知道或不知道如何设置它的人之间共享,所以如果可能的话,我想避免它。
编辑:记录在案 - 这是我找到的答案 -如何在本地主机和实时服务器上获得相同的 $_SERVER['REQUEST_URI']
我也不能删除 /project/public/ 因为这个文件夹结构并不总是相同的。
所以我基本上需要获取路径直到 public/ 部分,但我什至不能使用它,因为 public 文件夹可能被称为其他东西。
我知道这一定是可能的,因为诸如 Laravel 之类的框架可以做到这一点,但即使查看源代码 - 我也无法弄清楚。
谢谢你的帮助。
编辑:可能的答案
奇怪的是,一旦你发布了一些东西,你多久就会有一次脑电波……
我曾想过我可以在我的入口点运行 basename( DIR ),这将为我提供文件夹的名称,无论它是什么。然后,我可以使用它来删除(包括)该文件夹的第一个实例之前的所有内容。
我会试试这个,但如果有更优雅的解决方案,我仍然想听听。