3

帮我解决这个问题。

举个例子:我有这个普通的网址“localhost/CI/index.php/base/storeurl”。

我怎样才能让 Codeigniter 知道寻找“localhost/CI/storeurl”。

我有一个名为 index 的函数,它接受 Base.php 类中的参数 storeURL。帮我解决这个问题。提前致谢。

4

4 回答 4

4

我终于找到了我要找的东西。这是我的代码在 routes.php 中的样子。

/* Custom Routes. */
// Store Normal Pages.
$route['home/(:any)'] = "base/home/$1";
$route['about/(:any)'] = "base/about/$1";
$route['services/(:any)'] = "base/services/$1";
$route['contact/(:any)'] = "base/contact/$1";
$route['feedback/(:any)'] = "base/feedback/$1";

// CategoryPage.
$route['category/(:any)/(:num)'] = "base/category/$1/$2";
// ProductPage.
$route['product/(:any)/(:num)'] = "base/product/$1/$2";


// For Main Home Page.
$route['(:any)'] = "base/home/$1";

我真的很感谢所有帮助我解决这个问题的人。谢谢你们。

于 2013-01-12T11:25:02.543 回答
3

index.php在 WAMP 环境中从 CodeIgniter 中的 URL 中删除只需要三个步骤。

  1. 在 CodeIgniter 的根文件夹中创建.htaccess文件并添加以下代码:

    RewriteEngine On
    RewriteBase /CodeIgniter/
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
  2. 通过以下方式更改为应用程序文件夹中$config['index_page']的空字符串:config.php

    $config['index_page'] = '';
    
  3. rewrite_modulehttpd.conf文件中启用 Apache 。

你也可以参考这篇文章

于 2013-01-08T14:21:56.640 回答
1

这是一些伪代码和一些正确方向的要点,可以帮助您入门。

首先,您需要从您的网址中删除 index.php。这里肯定有数百个问题已经回答了这部分问题,所以我将这部分留给你。

正如许多人评论的那样,没有办法开箱即用地实现这种 url 结构,并且需要相当多的代码才能工作。我实现这个特定设置的方式是将所有请求路由到单个控制器,并在该控制器内处理自定义路由。

为此,请在底部添加一条路线routes.php作为全部内容。然后可以在此控制器之上添加其他控制器(新闻、事件等)的路由。这是一个示例 routes.php 可以帮助您入门。

配置/路由.php

// Other routes go up here

// Catch all route 
$route['(:any)'] = 'page/view';

// Home page route 
$route['default_controller'] = "page/index";

然后,您可以创建一个view函数controllers/page.php来检查 url(使用 codeigniters url helper),并加载与该 url 对应的正确视图。

控制器/page.php

class Page extends CI_Controller {

   public function index()
   {    
      // Do all code for your home page in here
   }

   public function view()
   {        
      // Retrive the url string
      $url = $this->uri->uri_string();

      // Check if the corresponding view file exists
      if (file_exists(APPPATH.'views/'.$url.'/index.php')){

         // Load the view
         $this->load->view($url.'/index');

      } else {
         show_404();
      } 
   }
}

比如说,一个用户去http://yoursite.com/CI/about-us,页面控制器的视图函数会从 url 中获取字符串about-us并将其设置为 $url 变量,然后搜索你的文件结构以检查相应的视图文件是否存在 /application/views/about-us/index.php。如果是,它将加载该视图文件,如果不是,它将重定向到 404。

以上都是从内存中输入的伪代码,所以它可能不会直接工作,但希望能给你一个关于如何达到你想要的结果的线索。

于 2013-01-09T03:46:00.060 回答
0

我总是无法让路由工作。最后我找到了解决方案。我只想分享以帮助有需要的人,因为我真的很喜欢 codeigniter,因为它既快速又轻便。我正在研究要在 $this->uri->segment(1) 上显示的动态类别标题。

$route['(:any)/method/(:any)']  = 'Class/method';    
$route['(:any)/gallery/(:any)'] = 'Class/gallery';    
$route['(:any)/listing/(:any)'] = 'Class/listing';

路由会注意到只要$this->uri->segment(2)是方法,就会去执行Class的方法。你的网址会很漂亮:

base_url()/business-services/gallery/6 
base_url()/travel/gallery/12

我还了解到路线必须具体。如果网址是这样的:

base_url()/旅游/新加坡/listing/1201

那么你的路线必须是:

$route['(:any)/(:any)/listing/(:num)']  = 'Class/listing';

如果你有参数传入方法(取决于你是使用参数还是uri_segment),

$route['(:any)/(:any)/listing/(:num)']  = 'Class/listing/$1';

玩得开心 :)

于 2015-06-16T03:25:15.013 回答