【问题标题】:How to design a User Friendly URI in CodeIgniter?如何在 CodeIgniter 中设计用户友好的 URI?
【发布时间】:2011-08-05 14:59:17
【问题描述】:

我是 CodeIgniter 的新手。

我需要设计一个简单的网站,从数据库中提取信息。数据库中的信息是关于广告的。我有关于国家、国家区域、区域位置和广告类型的信息。

我的目标是有一个类似的 URI:

http://www.someurl.com/index.php/country/country_zone/zone_location/ad_type/title_of_ad

有一些关于如何使用 CodeIgniter 执行此操作的信息?

最好的问候,

【问题讨论】:

  • CI Reactor 支持查询字符串——你最好看看这个,因为这样的 URI 可能很快就会让人困惑,而 ?country=uk&zone=sw&ad_type=full&title=foo 至少有一些语义意义(也许也来自SEO 视角和用户)
  • 我认为显示当前 URL 的实际外观对您来说是有意义的。大约有一百万种方法可以完成您的要求,这将取决于您正在使用的内容。我也会发布你的控制器。

标签: codeigniter friendly-url


【解决方案1】:

链接中的前 2 个参数是您的控制器名称和您要调用的该控制器的方法。

所以

http://www.someurl.com/index.php/country/country_zone/zone_location/ad_type/title_of_ad

意味着您调用country 控制器的country_zone 方法并将zone_location、add_type 和title_of_ad 传递给该方法。

你想要什么

http://www.someurl.com/index.php/TheControler/themethod/country/country_zone/zone_location/ad_type/title_of_ad

这样实现:

class TheControler extends Controler{
    function themethod($country,$country_zone,$zone_location,$ad_type,$title_of_ad){
        //your code
    }
}

【讨论】:

    【解决方案2】:

    我认为最简单的方法是在您的 application/config/routes.php 中使用自定义路由。像这样的:

    $route['^(:any)/(:any)/(:any)/(:any)/(:any)'] = "your_controller/get_ads/$1/$2/$3/$4/$5";
    

    那么您的控制器功能将类似于:

    function get_ads($country, $country_code, $zone_location, $ad_type, $title_of_ad) {
        // your code
    }
    

    .. 如果参数有某种模式,您可以用更具体的正则表达式替换 (:any)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-25
      • 2022-01-08
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多