2011-09-15 71 views
0

我想重寫我的url從/ controller/method到index.php?/ controller/method,而且大部分工作正常,除了表單不會正確提交。我設置了一些路由,但表單也打破了非重新路由的URL。這是一個小小的背景。表格在CodeIgniter中被破壞

我已將我的index.php移出到一個單獨的web根目錄中,因此沒有機會公開應用程序文件。我不確定這是否會導致此問題,但對於我的安裝而言,這有點不同尋常。我的目錄結構如下:

+ codeigniter/ 
    + application/ 
    - models, views, etc 
    + system/ 
    + web/ 
    - .htaccess 
    - index.php 
    - css, javascript, images, etc 

我的.htaccess很簡單:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

它似乎在XAMPP做工精細適用於Windows,但它是一個基本的Ubuntu LAMP堆棧打破。當我提交表格時,沒有任何反應。表單指向要加載的頁面,但好像該表單尚未提交。

對不起,還有一條重要信息:如果我把index.php放在那裏,那麼url就像/index.php/contacts/edit/1,它的工作原理。

讓我知道,如果我可以提供任何更多的信息。謝謝!

+0

描述「沒有任何反應」多一點。空白頁?屏幕上出現錯誤?同一頁面重新加載到位? –

+0

@Michael編輯。發生的事情並不多,或者我可以更有效地進行調試。我希望別人看到類似的東西。當然,錯誤報告是。 – theazureshadow

+0

不知道路由發生了什麼,但如果在提交表單的方法中執行print_r($ _ POST),會發生什麼情況? – stef

回答

0

發現我沒有包含的.htaccess的一部分導致錯誤很難找到。

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 

我曾以爲,這將顯示一個笨的錯誤頁面,如果達到該塊,但事實證明,(我認爲)那笨是勇敢嘗試通過$_SERVER看路徑挽回局面,從它能夠獲得它應該顯示的頁面。但是,由於路徑不存在,所以$ _POST數據都沒有通過。在錯誤日誌中,我看到了這一行:

[error] File does not exist: /path/to/web/contacts/edit/1 

啓用mod_rewrite解決了這個問題。