2015-04-06 101 views
0

我在apache php上使用CodeIgniter,如果我在控制器級別或方法級別上輸錯了url(例如http://www.example.com/index.php/mistypedcontroller/mistypedfunction),我得到404頁面。CodeIgniter可以顯示404錯誤類型index.php url的頁面嗎?

但是,如果我輸入http://www.example.com/mistyped.php/controller/function,我得到了一個空白頁。有沒有辦法在這裏顯示相同的404頁面?

回答

2

「可以CodeIgniter顯示404錯誤類型index.php網址的頁面?」

不,它不能。如果您輸錯index.php,那麼您不再在/使用CodeIgniter。

看看這個文件,你會發現index.php正在構建一切,最後一行是包含CodeIgniter.php核心文件。


www.example.com/index.php/mistypedcontroller/mistypedfunction 

這第一個以上是使用index.php,所以它是由笨生成。

www.example.com/mistyped.php/controller/function 

這第二個,因爲它不使用index.php,絕對沒有做笨。

有沒有辦法在這裏顯示相同的404頁?

它必須是一個獨立的文件,並配置爲通過Apache的.htaccess文件中使用ErrorDocument 404選擇您的特定服務器。

或者,如果你只是按照the documentation for removing the index.php from the URL,你的情況永遠不會發生;您破損的URL示例將導致CodeIgniter 404錯誤,因爲任何/每個URL(指向的文件不存在)都會被強制到您的index.php文件中。

如果你的Apache服務器已經啓用mod_rewrite,你可以很容易地通過使用.htaccess文件有一些簡單的規則刪除此文件。下面是這樣一個文件的一個例子,使用「負」的方法中,一切都被重定向除指定的項目:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 

在上述例子中,任何HTTP請求比其他現有目錄和現有文件被視爲您的index.php文件的請求。

+0

好的,我現在明白了。謝謝 – daxu

+0

@daxu,不客氣。請「接受」我的回答。謝謝。 – Sparky