0

我知道在 Codeigniter 中,如果未在 url 中指定控制器,则始终调用默认控制器。此外,如果 url 中没有指定函数,则默认调用控制器的 index 函数。但是,当我在浏览器地址栏中输入以下网址时,每个网址都会得到不同的结果:

http://localhost/appfolder/

http://localhost/appfolder/index.php/defaultController

对于第一个 url,即使用户确实已登录,似乎用户也没有登录。第二个 url 工作正常,并且无论用户是否登录都做正确的事情,即它执行索引功能的默认控制器。在我看来,第一个 url 并没有执行默认控制器的索引功能。我绞尽脑汁想弄清楚为什么输入两个网址会产生不同的结果,因为据我所知,它们应该有相同的结果;即它们都应该调用默认控制器的索引函数。我是使用 codeigniter 的新手(现在已经使用了大约 2 个半月),所以任何帮助都将不胜感激。

这是一个编辑: 我知道这里的大多数评论都是关于使用 htaccess 文件,但它是否应该以同样的方式工作 index.php 是否在 url 中?有没有人对我可以做些什么来查明问题有任何其他建议?

4

3 回答 3

1

如果您想通过 urlhttp://localhost/appfolder而不是通过 url 访问该站点,http://localhost/appfolder/index.php/defaultController则需要在您的站点 webroot 文件夹(包含 index.php 的文件夹)中设置一个 .htaccess 文件。这几乎是我在我的网站上使用的(为您的设置定制):

RewriteEngine On
RewriteBase /

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

选择

RewriteEngine On
RewriteBase /appfolder

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

有大量讨论和其他方法的类似问题: How to remove "index.php" in codeigniter's path

于 2012-11-21T08:48:13.113 回答
0

嘿,在你的 htaccess 文件中使用这个,我认为它会起作用............

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2012-11-21T08:59:09.457 回答
0

在路由配置文件中设置默认控制器:

$route['default_controller'] = 'Blog';

文档

当 URI 不存在时,可以告诉 CodeIgniter 加载默认控制器,当只请求您的站点根 URL 时就是这种情况。要指定默认控制器,请打开您的 application/config/routes.php 文件并设置此变量。

于 2012-11-21T08:13:17.147 回答