【问题标题】:How to have url's like domain.com/<article-name> in CodeIgniter如何在 CodeIgniter 中拥有类似 domain.com/<article-name> 的 URL
【发布时间】:2017-09-26 16:51:23
【问题描述】:

我有一个文章控制器和一个视图函数来显示单个文章,所以我的网址就像

http://domain.com/articles/view/&lt;article-id&gt;/&lt;article-title&gt;

我的代码:

class Articles extends CI_Controller {  
   function view($id=NULL,$slug=""){
        //Code to fetch article details from DB by id
    }
}

如何让我的网址看起来像http://domain.com/&lt;article-title&gt;

谢谢。

【问题讨论】:

    标签: codeigniter codeigniter-url codeigniter-routing


    【解决方案1】:

    将路由配置中的所有控制器定义为它们自己的方法。在路由配置的末尾添加以下规则 -

    $route['(:any)']   = 'articles/view/$1';
    

    除先前定义的路由之外的所有请求现在都将由artcile/view 控制器方法提供服务。

    下一部分是创建一个映射表,它将文章标题映射到文章 ID。您可以使用

    获取文章标题
    $this->uri->segment(1);
    

    view 函数中。

    每当文章更新标题时,也会更新映射表。

    【讨论】:

    • @varun1505 您可以使用文章标题作为唯一 ID,并将其作为 URI 中的第一段传递
    【解决方案2】:

    我为我的博客做了类似的事情。 @Varun 根据 Sachin 的评论,这是下划线路由路径 domain.com/articles/view/ 实际上您会看到 url 如预期的那样 domain.com/

    我也扩展了这样的级别网址

    $route['spring/(:any)'] = "controller_name/method_name/$1";
    $route['hibernate/(:any)'] = "controller_name/method_name/$1";
    

    所以实际的 URL 看起来像这样

    domainname.com/spring/spring-jdbc-example which is mapped to  "controller_name/method_name/$1"
    

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多