【问题标题】:New pages in CodeIgniter on a big website大型网站上 CodeIgniter 中的新页面
【发布时间】:2011-04-24 19:10:45
【问题描述】:

我有一个网站,其中包含许多用“纯”PHP 编写的脚本,即没有使用特定框架来编写文件。此外,所有 URL 都是使用 .htaccess 和特定 PHP 脚本自定义的。

为了平稳过渡,我想在不中断对旧页面的访问的情况下开始将 CodeIgniter 用于新页面,但是我在 CodeIgniter 上看到的所有文档都给人的印象是整个网站(可能有一些例外)需要基于框架。

是否可以在这里和那里为单个页面使用该框架,同时保留旧的 URL 和代码?

【问题讨论】:

    标签: php codeigniter codeigniter-routing


    【解决方案1】:

    简短的回答,是的。

    例如,您可以从子文件夹中访问 CI 框架,而不影响现有站点。

    www.site.com/my_new_app/controller/method/
    

    其中my_new_app 是重命名的application 文件夹。

    【讨论】:

      【解决方案2】:

      我将假设您已经有一个基本的模板系统,并且能够使用您现有的网站呈现整个页面。由于 Codeigniter 实际上只是一个框架,因此没有什么可以阻止您使用 vanilla php,例如 include,或其他库和类。因此,您可以做的一件事是将您的网站转储到您的 views 文件夹中的子目录中,然后创建一个“主”控制器,它只加载完整的 html 页面。

      class Master extends CI_Controller {
      
          function __construct()
          {
              parent::__construct();
          }
      
          function index()
          {
              // We're expecting something like "registration/how-to-apply" here
              // Whatever your URL is. The .php extension is optional
              $args = func_get_args();
              $path = 'path_to_my_old_site/'.explode('/', $args);
              $this->load->view($path);
          }
      
      }
      
      // Then use this in config/routes.php
      $route['(:any)'] = 'master/index/$1';
      

      这将通过主控制器路由所有页面。因此,yoursite.com/pages/faq 将加载文件application/views/old_site/pages/faq.php。您可以根据需要应用不同的路线。

      这样,您可以花时间迁移到使用 Codeigniter 约定,一次一页。

      【讨论】:

      • 谢谢,但我认为这不切实际,因为我已经使用 mod_rewrite 和自定义 PHP 脚本设置了复杂的 URL 重写系统。
      • 是的,您必须使用这种方法将重写移动到routes.php,而且可能有太多需要管理。
      猜你喜欢
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2015-12-05
      • 2010-09-05
      相关资源
      最近更新 更多