【发布时间】:2011-09-15 17:40:24
【问题描述】:
我正在尝试重写我的网址以从 /controller/method 转到 index.php?/controller/method,这主要是有效的,只是表单无法正确提交。我设置了一些路由,但表单也在非重新路由的 url 上中断。这里有一点上下文。
我已将我的 index.php 移到一个单独的 web 文件夹中,即 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 for Windows 上运行良好,但它在基本的 Ubuntu LAMP 堆栈上被破坏了。当我提交表单时,没有任何反应。表单指向的页面加载,但好像表单尚未提交。
抱歉,还有一条重要信息:如果我将 index.php 留在其中,那么 URL 看起来像 /index.php/contacts/edit/1,它可以工作。
如果我能提供更多信息,请告诉我。谢谢!
【问题讨论】:
-
再描述一下“什么都没有发生”。空白页?屏幕错误?同一页面重新加载到位?
-
@Michael 已编辑。发生的事情并不多,否则我可以更有效地调试它。我希望其他人也看到过类似的东西。当然,错误报告已开启。
-
不确定路由发生了什么,但是如果您在提交表单的方法中执行 print_r($_POST) 会发生什么?
-
可以显示表单代码吗?仅限
action="..." -
@theazureshadow,实际上确实发生了很多事情 - 很多事情都可以确定问题。检查浏览器调试器(如 Firebug)是否有 HTTP 重定向或状态消息,并检查服务器 php 日志是否有 PHP 错误。
标签: php forms codeigniter url-routing