2011-09-15 40 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解决了这个问题。