为什么在所有框架中都有一个index.php文件?

时间:2014-03-17 05:40:09

标签: php .htaccess codeigniter redirect laravel

当我使用codeigniter时,有一个'index.php'来自url,我不得不使用htaccess重写规则删除它(对于一个初学者和一个不了解htaccess或其重写规则的人 - 很难第一次删除它以使网址漂亮)

我认为这是一个令人讨厌的问题,并决定忽略它。

现在我打算开始一个laravel项目,同样的index.php也来到这里。现在我知道如何处理它了

我现在可以理解它是一个常见的框架功能,但我不明白它在框架中的作用?

用Google搜索但无法找到答案。请提前告知我并提前感谢

3 个答案:

答案 0 :(得分:2)

大多数框架都依赖index.php来启动bootstrap /是常见的"入口"进入所有请求的代码。 .htaccess文件被设置为将所有未知路径(404s)发送到index.php,因此请求"漂亮"实际上不存在于文件系统上的URL实际上是由index.php接收的。然后,框架查看原始请求的路径,并将其与已知路由列表进行比较,以确定要执行的操作。

通常,您不需要触摸index.php或.htaccess文件。我会检查你选择的框架的文档,以找到如何添加路由和控制器。

答案 1 :(得分:0)

如果浏览器请求没有发送文件名,Apache和IIS会搜索一组文件。因此,如果Url以斜杠结尾,则服务器实际上会尝试传递(默认情况下)index.htm,index.html或index.php,无论他先找到哪个。这就像预定义的重写规则,虽然简单得多。

答案 2 :(得分:0)

index.php , index.html, index.*是大多数Web服务器的默认文档。所以你在根文件夹中创建index.php然后在url中你不想指定文档名称示例http://www.example.com这里我没有指定文档名称默认情况下web服务器试图查找{{1如果它是php,那么它将是index。虽然您可以使用index.php此文件在apache2中更改此默认设置。 (我不使用IIS,所以我不知道怎么做,但也有可能)

所有框架都使用此index.php根据url请求加载所有类和路由。特别是在代码点火器中,/etc/apache2/apache2.conf使用.htacess文件将请求index.php带到url。例如http://www.example.com/doc/1,此index.php部分将发送到/doc/1文件,然后此文件将决定加载哪个文档(Controller)。从头开始阅读MVC tutorials将帮助您理解这一点。