Codeigniter URL路径

4
这是我能想到的最简单的问题,因为我还没有完全理解发生了什么,或者我做错了什么。
我在处理URL时遇到了问题。 http://localhost/index.php/userhttp://localhost/相同,但http://localhost/index.php/user/somethinghttp://localhost/something不同。
如何使http://localhost/something工作?
它必须是http://localhost/user/something吗?如何使其工作?

抱歉,我刚开始使用CI,但无论我去哪里找答案都找不到,我已经花了几个小时了。 - Andrei Cristian Prodan
4个回答

2
您需要了解CodeIgniter的URL是如何工作的。
一个URL由一些段组成。在这个例子中,http://localhost/index.php/user/something/thing中的usersomethingthing是URL的段。
URL的段表示将运行哪个控制器以及该控制器的哪个方法。在这个例子中,从user控制器调用something方法,并将thing作为参数传递给该方法。
URL的第一个段表示控制器。
URL的第二个段表示该控制器的方法。
接下来的段作为参数发送到该方法。
但有一些默认设置。
如果您的URL是http://localhost/index.php/something,则已将something指定为控制器,但因为您没有指定任何方法,所以调用默认方法index。因此,上面的URL与http://localhost/index.php/something/index相同。
如果您的URL是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相同,则必须为您的应用程序创建自定义路由。有关更多信息,请单击此处

1

1
为了让 http://localhost/something 起作用,你需要一个名为 something 的控制器,并且其中包含一个 index 方法。这与访问 http://localhost/something/index 是相同的。
另外,http://localhost/user/something 意味着你有一个名为 user 的控制器,并且其中包含一个名为 something 的方法。
这有帮助吗?

0

要从您的网址中删除index.php,您需要使用在这里描述的mod_rewrite方法

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

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


@Andrei 我也刚开始使用CI(CodeIgniter),而且非常喜欢它。这个方法对我也很有用。我也是stackoverflow的新手,无法在你的问题下评论 :S 所以我在这里回复了。 - steve
我想我真正想做的是删除index.php。 除了mod_rewrite,是否有更简单的方法来实现这一点,例如一些CI特殊功能? - Andrei Cristian Prodan
这并不像看起来的那么复杂。事实上,我只需要完成 mod_rewrite how-to 的第1步和第2步。我见过一些代码更少的 .htaccess 方法,但是这个版本有一些额外的功能,而且只需要简单的复制/粘贴然后更改基本文件夹名称即可。 - steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接