【问题标题】:Codeigniter routing not worksCodeigniter 路由不起作用
【发布时间】:2016-09-02 12:24:50
【问题描述】:

您好,我有这个 url 127.0.0.1/link/index/25,我的默认控制器是链接,当我使用 127.0.0.1 时,我可以看到链接控制器的索引,但是当我在 url 中传递一个参数时127.0.0.1/25 不起作用我必须使用完整的 url,我该如何改进它?

我尝试在 route.php 中添加静态路由,但它不起作用

$route['index/(:num)'] = 'link/index/$1';

【问题讨论】:

  • 127.0.0.1/25 应该是 127.0.0.1/index/25 或者这个 $route['index/(:num)'] = 'link/index/$1'; 应该是 $route['(:num)'] = 'link/index/$1';
  • 按照配置WARNING: You MUST set this value!中的说明设置游览基地网址$config['base_url'] = 'http://localhost/yourproject/';

标签: php codeigniter url routes


【解决方案1】:

如果你想要像 127.0.0.1/25 这样的 URL,那么你的路由应该是:

$route['(:num)'] = 'link/index/$1';

或者,如果您想使用与$route['index/(:num)'] = 'link/index/$1'; 相同的路由,那么您的链接应该是:

127.0.0.1/index/25

但请注意,此路由 $route['(:num)'] 将更改所有其他 URL,您必须使用与您使用的相同的路由,只需将 URL 更改为

127.0.0.1/index/25

旁注:其他解决方案是 htaccess。

【讨论】:

    【解决方案2】:

    您必须使用规则来匹配所需格式的 URL。在您的情况下,这将是:

    $route['(:num)'] = 'link/index/$1';
    

    话虽如此,您可能希望在 URL 中使用一些前缀,而不是直接使用数字 ID。如果您的网站发展壮大,它可能会在未来对您有所帮助。像http://127.0.0.1/link/25 这样的路径是

    $route['link/(:num)'] = 'link/index/$1';
    

    【讨论】:

      【解决方案3】:

      有一个错误,

      您必须删除索引 $route。

      $route['(:num)'] = 'link/index/$1';
      

      有关更多详细信息,请阅读关于隐式和显式路由的内容 代码点火器。并且还要阅读这个答案 --> .how-to-set-dynamic-route-to-use-slug-in-codeigniter

      【讨论】:

        【解决方案4】:

        你不能有一条不说明路线是什么的路线。 CI 如何知道它应该是控制器还是带参数的默认控制器。

        当您转到 127.0.0.1 时,您将获得默认链接控制器。要使用参数链接到控制器,您需要使用 127.0.0.1/link/index/25

        至于整理 URL,有不同的方法可以解决这个问题。您希望您的网址是什么样的?首先是将方法从 index 更改为 mywebpage,并更改路由配置文件中的默认控制器。

        或者你可以使用路由来路由更漂亮的 URL,或者你可以使用 htaccess。但是您不能将参数传递给未命名的控制器。出于同样的原因,您的默认控制器不能位于子文件夹中。

        希望对你有帮助,

        保罗

        【讨论】:

          猜你喜欢
          • 2011-11-07
          • 2018-06-27
          • 1970-01-01
          • 1970-01-01
          • 2013-04-06
          相关资源
          最近更新 更多