2011-06-29 96 views
4

这是我可以问这个问题最简单的方法,因为我没有完全理解发生了什么,或者我做得不对。Codeigniter网址路径

我遇到了网址问题。

http://localhost/index.php/user相同http://localhost/ http://localhost/index.php/user/something是不一样的http://localhost/something

如何使http://localhost/something工作?

是否必须是http://localhost/user/something,我该如何做到这一点?

+0

对不起,我只是从CI开始,我无法在任何地方找到我的答案,我已经在这个小时。 –

回答

2

您需要了解CodeIgniter的URL如何工作。

  • URL由一些段组成。 http://localhost/index.php/user/something/thing在此示例中,usersomethingthing是URL的片段。

  • 该段的URL指示哪个控制器以及该控制器的哪个方法将运行。 http://localhost/index.php/user/something/thing在此示例中,方法somethinguser控制器被调用,并且thing作为参数传递给该方法。

  • URL的第一部分表示控制器。

  • URL的第二部分表示该控制器的方法。

  • 以下片段作为参数发送到该方法。

但有一些默认值。

  • 如果您的网址是http://localhost/index.php/something,你必须指定为控制器something,而是因为你没有指定任何方法,这是index被称为默认方法。因此,上述网址与http://localhost/index.php/something/index相同

  • 如果您的网址是http://localhost/index.php/,您没有指定任何段(无控制器和无方法)。因此在application\config\routes.php中指定的默认控制器是加载的控制器。该控制器的哪个方法将被调用?方法当然是index

    - 您可以通过将$route['default_controller'] = "site";更改为适合您的应用程序的application\config\routes.php的文件来设置默认控制器。

  • 如果您希望http://localhost/user/somethinghttp://localhost/index.php/user/something相同,则必须为您的应用程序创建自定义路线。更多关于那here的信息。

1

为了使http://localhost/something正常工作,您需要一个名为something的控制器,并使用index方法。这与访问http://localhost/something/index相同。

或者,http://localhost/user/something意味着您有一个user控制器,其方法名为something

这有帮助吗?

0

从网址中删除的index.php,你必须使用mod_rewrite的方法描述here

然后从URL中移除控制器名称(用户),您需要使用routes

你的情况,您需要将$route['^(something|something_else|etc)(/:any)?$'] = "user/$0";添加到您的routes.php文件中

+0

@Andrei我也​​刚刚开始与CI(并且喜欢它),这对我有效。我也是新来的stackoverflow,所以不能评论你的问题:S,所以我在这里做 – steve

+0

我想我真的想做的是删除index.php。有没有更简单的方法来做到这一点,而不是mod_rewrite,就像一些CI技巧功能? –

+0

它不像看起来那么复杂。事实上,我只需要执行mod_rewrite操作步骤的第1步和第2步。我已经看到.htaccess代码较少的方法,但是这个版本有一些额外的功能,再加上它只是一个简单的复制/粘贴,然后更改基本文件夹名称。 – steve