如何在单个共享托管服务器中运行多个codeigniter应用程序?

时间:2019-05-11 20:21:44

标签: codeigniter codeigniter-3 codeigniter-2

我正在使用共享托管的Codeigniter应用程序进行部署。 如何在实时服务器上运行登台URL?

1)domain.com(正在运行) 2)domain.com/staging/(不起作用,显示404错误)

我在public_html目录下创建了一个暂存文件夹,现在将所有CI代码放在暂存文件夹中,并尝试使用URL domain.com/staging/运行该应用程序,但它重定向到domain.com/404

我希望为用户运行domain.com,为开发运行domain.com/staging。 (我将使用暂存URL进行开发,然后我将对实时URL放置相同的代码。)

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用一个子域作为暂存版本,即staging.doman.com。放置CI文件的文件夹并不重要,因为子域将设置为使用您选择的目录。

您将需要完全控制服务器,或者需要一个服务提供商来允许您设置子域。

-扩展答案-

如果您无法设置子域,那么您的下一个最佳选择是使用Managing you Applications文档中的建议。不需要使用此处显示的文件结构。您可以尝试以下方法。

  1. 在与application相同级别的文件夹中创建名为staging的文件夹。

  2. 将通常在/application中找到的所有文件夹和文件复制到该文件夹​​中。

添加站点所需的所有应用程序文件夹和文件。这些文件夹中的文件是组成您要暂存的应用程序的文件。

  1. 复制index.php(位于公用文件夹根目录下的文件,即domain.com/index.php)并命名为staging.phpindex.phpstaging.php都位于同一文件夹中。

  2. 编辑staging.php并将$application_folder的值更改为临时文件夹的绝对路径。例如:

    $application_folder = '/path/to/domain.com/public_folder/staging';

上面的路径是一个示例。您必须将其替换为服务器中的实际路径。如果您不知道完整的绝对路径是什么,可以使用

$application_folder = dirname(__FILE__).'/staging';
  1. 浏览到URL domain.com/staging.php,您应该获得默认控制器的输出。要测试您是否真正在查看页面的暂存版本,请暂时更改视图文件中的内容,以便毫无疑问。

您将使用URL domain.com/staging.php/other_controller转到其他控制器。

  1. $config['index_page']/staging/config/config.php的值更改为staging.php,例如

    $ config ['index_page'] ='staging.php';

没有上述更改redirect()和许多其他“辅助”功能将无法正常工作。

  1. (可选?)您可能可以像编辑.htaccess一样编辑主staging.php并为index.php添加重写规则。但我将其留给您练习。 (或另一个SO问题。)

最后一句话。可能需要进行其他配置更改以适应修订后的文件结构。我在这里测试了答案,但没有超出浏览控制器的最基本任务。会话,Cookie和许多其他配置的最可能配置值将需要调整,以使暂存版本正确运行。请查看Handling Multiple Environments上的文档,以获取减轻痛苦的指南。