【发布时间】:2023-04-04 20:27:01
【问题描述】:
我在 CodeIgniter 应用程序中有三个控制器 - i、login 和 test。
所有控制器都与/APP/index.php/ 路径完美配合——我可以打开/APP/index.php/i、/APP/index.php/login 和/APP/index.php/test。
控制器 i 和 login 在没有 index.php 的情况下也可以工作 - /APP/i 和 /APP/login(我有一个修改过的 .htaccess 文件)。
如果没有index.php,控制器 test 将无法工作 - 打开 /APP/test 时出现 404 错误。
i 是默认控制器,但login 不是默认控制器,它可以工作(我认为这可能是问题所在)。
当我添加第 4 个控制器时,如果没有 index.php,它也无法工作。
它变得更加奇怪 - 有时我可以打开 /APP/test/some_function(有时我不能),然后我什至可以打开 /APP/test。但是我不能以这种方式再次打开它。 index.php 方式一直有效。 Test 控制器有一个非常简单的代码...
所以我的问题是这里可能出了什么问题,如果没有index.php,我怎样才能让我的控制器可以访问?
非常感谢您的帮助。
下面是我的.htaccess文件,我认为问题可能出在:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /APP/
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>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
【问题讨论】:
-
你不会碰巧有一个名为
test的目录作为 index.php 的邻居,对吗? -
您是否在
config.php文件中设置了$config['index_page'] = '';。 -
不,我没有目录
test(你的意思是顶级 index.php,对吗?反正没有这样的目录...顺便说一句好主意,我从来没想过要检查) .是的,$config['index.php'] = ''...谢谢。 -
@esp 将日志设置为调试级别并检查日志,看看是否可以通过阅读获得任何线索
-
非常感谢。我现在明白问题出在哪里了。实际上,当您在没有
index.php文件的情况下访问控制器时,主应用程序文件夹会区分大小写(在我的问题中是APP)。由于我有一个更长的应用程序文件夹名称并且它同时包含小写和大写字母,所以我只是在错误的情况下输入了一个字母。对于默认控制器,这无关紧要,其他控制器是通过大小写正确的链接访问的。由于直接访问了test,这个错误的案例给了我 404 错误。通过index.php路径,大小写无关。
标签: .htaccess codeigniter controller