【发布时间】:2013-08-10 12:16:43
【问题描述】:
我刚刚将我的 codeigniter 项目从我的 wamp 服务器转移到我几乎免费的语音服务器上,并且遇到了一些奇怪的问题。我正在使用我在网上找到的 mod_rewrite 从 url 中删除臭名昭著的“index.php”,我认为当我提交表单时它会导致重定向,丢失帖子数据。
这是我的 htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
在表单调用的脚本中,我正在检查是否有发布数据。如果没有发布数据,我会重定向到 404 错误(这是为了防止人们通过 url 调用脚本)。因此,在上传网站后,每次提交表单时我都会收到 404 错误,这表明没有发送数据。但是,出于调试目的,我从脚本中删除了所有代码,发现现在提交表单会加载一个空白页面。由于表单不应该实际加载新页面,这表明脚本正在重定向到自身,从而丢失帖子数据,然后最终满足我的帖子数据测试并重定向到 404。
关于为什么会发生这种重定向的任何想法?这真的很重要,如果有任何建议,我将不胜感激!
谢谢
【问题讨论】:
-
由于您的
.htaccess文件,它不会发生。您的规则中没有重定向标志。尝试将 HTTP 请求发送到包含/index.php/的 URL。如果你遇到同样的问题,它与.htaccess文件无关。 -
我重写了表单的操作以包含 index.php,这解决了问题。我暂时可以使用这种解决方法(因为我非常需要时间),但我真的很想知道未来项目的情况。有什么想法吗?
标签: php .htaccess codeigniter