2009-12-16 44 views
0

Codeigniter php框架的URL看起來像上面那樣。apache如何將http://www.example.com/index.php/abc/def映射到index.php?

我很驚訝,Apache將這個請求映射到index.php在服務器根目錄。我期望它將/index.php/abc/def解釋爲目錄/index.php/abc中的文件'abc',並因此導致404 Not Found(因爲不存在這樣的文件)。

任何人都可以解釋爲什麼index.php被執行嗎? 有沒有解釋apaches'地圖請求資源'策略的文檔,這將解釋上述觀察?

+0

告訴我們一些關於你的apache配置。你在使用mod_rewrite嗎?你有htaccess文件嗎? – 2009-12-16 13:51:20

+0

沒有mod_rewrite,沒有.htaccess。只是簡單的Apache – zedoo 2009-12-16 13:58:10

回答

3

因爲當它在根文件夾中查看時,它看到index.php是一個文件而不是文件夾,所以它執行該文件而不是在路徑的下一個元素中查看它(如果是目錄)。

「路徑」的其餘部分則變成各種各樣的非常規的查詢字符串

2

的index.php是在項目的文檔根目錄的實際文件。該框架設置爲將所有請求路由到此文件。它通常也被稱爲「bootstrap」文件。引導程序文件負責啓動您的應用程序,並最終將您的請求發送到需要的地方。

在框架中有一個路由器,它接受uri,index.php之後的所有內容,然後將其映射到控制器/操作組合。