【问题标题】:Change base_url in codeigniter before publsihing在发布之前更改 codeigniter 中的 base_url
【发布时间】:2015-03-07 07:57:10
【问题描述】:

我想发布我的 codeigniter 网站。

现在它位于“../htdocs/site/”文件夹中。 base_url 是:

$config['base_url'] = 'http://localhost/site'; 

我是否应该将“站点”文件夹复制到真实服务器并像这样更改 base_url:

$config['base_url'] = 'http://example.com/site';

或者还有其他方法可以让我在 URL 中隐藏“/site”?

这是我的第一个项目,非常感谢您的帮助。

更新:

Root/
      -Application1
      -System1
      -Site1/
                    -index.php
                    -css
                    -js
                   -images
      -Application2
      -System2
      -Site2/
                    -index.php
                    -css
                    -js
                   -images

【问题讨论】:

    标签: php codeigniter url publish


    【解决方案1】:

    您不需要为每个环境复制您的应用程序。 Codeigniter 可以处理多种配置。您只需为每个环境设置一个文件夹。

    让我们假设以下组织:

    Root/
          -Application
          -System
          -Assets           
             -css
             -js
             -images
    
          -index.php
    

    我们将有 3 个环境:开发/测试/生产。

    我们知道我们的应用程序将根据环境具有不同的 base_url 和数据库配置。这意味着每次我们将应用程序从一个环境移动到另一个环境时,我们都需要修改 config.php 和 database.php。

    CodeIgniter 为我们提供了一种简单的方法:

    http://www.codeigniter.com/user_guide/general/environments.html

    http://www.codeigniter.com/user_guide/libraries/config.html#environments

    我们只需要在 application/config 中设置 3 个文件夹

    -application
          -config
             - development
             - testing
             - production
    

    在这些新文件夹中,只需放置在每个环境中都不同的配置文件。在我们的例子中,config.php 和 database.php

    -application
          -config
             - development 
                  -config.php
                  -database.php
             - testing
                  -config.php
                  -database.php 
             - production
                  -config.php
                  -database.php
             - autoload.php
             - ...
    

    最后,在根 index.php 中只需要修改以下行来告诉 CI 它是在哪个环境中:

    define('ENVIRONMENT', 'development'); //for dev env
    define('ENVIRONMENT', 'testing'); //for testing env
    define('ENVIRONMENT', 'production'); //for prod env
    

    开发/测试/生产是 CI 中的默认环境,但您可以通过在 application/config 中创建文件夹并修改根 index.php 中的开关来创建自己的环境:

    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
        break;
        case 'server':
            error_reporting(E_ALL);
        break;
        case 'testing':
        case 'production':
            error_reporting(0);
        break;
       /*CUSTOM ENV :*/
        case 'custom_env':
            error_reporting(E_ALL);
        break;
        default:
            exit('The application environment is not set correctly.');
    }
    

    【讨论】:

    • 谢谢,但您还没有回答我的问题。在您的示例中,根目录中只有一个网站。但是如果有两个或多个网站并且每个网站都有 index.php 文件怎么办。
    • 您不需要将您的应用程序分隔在不同的文件夹中。如果有多个应用程序,您可以将我的答案与该策略混合使用:codeigniter.com/user_guide/general/managing_apps.html
    • 但是如果有不同域的完全不同的应用程序怎么办。例如,可以有 5 个 wordpress 网站、7 个 codeigniter 网站、3 个 joomla 网站、6 个 php 网站等。或者也许可以为每个网站重命名 index.php 文件?
    • 在这种情况下确实行不通,但它更多的是关于服务器/dns 配置的问题,而不是 codeigniter 的设置。
    【解决方案2】:

    试试这个...

    Move file from site directory to root directory and change root path index.php
    
    $system_path = '../site/system';
    $application_folder = '../site/application';
    
    to 
    $system_path = '../system';
    $application_folder = '../application';
    
    Change baseurl:$config['base_url'] = 'http://example.com/';
    

    【讨论】:

    • 感谢您的回答。实际上我想知道如果我将第二个网站复制到我的根目录会发生什么。会有两个 index.php 文件吗?我认为可以为根目录中的每个网站创建一个文件夹(使用相关的 index.php 文件和 css js 文件)。请查看问题的更新部分。
    【解决方案3】:

    只需将“站点”的内容(不是站点文件夹只是内容)复制到服务器中的公共 html 然后将 base_url 设置为 'http://example.com/

    注意:如果在 htaccess 中使用 base 将其更改为仅 /

    【讨论】:

    • 问题是以后同一个根目录下的站点会比较多。请检查我的答案的更新部分,看看我想如何组织结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2018-11-08
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2012-03-15
    • 2017-04-01
    相关资源
    最近更新 更多