Php 对每个客户端包含使用base_url()值吗?

Php 对每个客户端包含使用base_url()值吗?,php,codeigniter,Php,Codeigniter,我使用CodeIgniter,我喜欢它,但我不知道这样做是否真的值得: <link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css" /> <script src="<?php echo base_url(); ?>js/jquery.js"></script> <script src="<?php echo base_url(); ?>js/f

我使用CodeIgniter,我喜欢它,但我不知道这样做是否真的值得:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css" />
<script src="<?php echo base_url(); ?>js/jquery.js"></script>
<script src="<?php echo base_url(); ?>js/functions.js"></script>
...
<img src="<?php echo base_url(); ?>images/dolphin.png" />

如果您认为可能需要将应用程序移动到其他子文件夹(而不是其他子域),则可能值得使用
,但是如果您可以假设应用程序将始终安装在其自己的域或子域上,则一定要取消函数调用,它增加了不必要的混乱,并将更多信息发送到用户浏览器


这取决于您认为应用程序需要做什么。

在我看来,您应该始终使用base_url()来定义路径,因为这样可以确保您的路径始终是正确的。如果您认为echo函数太脏,您可以始终使用内置的CodeIgniter之类的模板引擎或一些外部引擎。

我只是想添加一些与我相关的东西

  • 正如您所提到的,如果您需要在子目录中安装Codeigniter,
    /
    前导正斜杠当然不起作用。您必须在路径中包含子目录名。就个人而言,这经常出现,因为我们将在子目录中安装重新设计或原型。但是,如果您还没有让CI自动检测到您的基本url(从v2.0.2开始),那么切换到SSL(如果适用的话)会很好

  • $config['base\u url']
    更改为不包含完整域可能是个坏主意。在我看来,这会破坏应用程序使用
    base\u url()
    函数发送的电子邮件中的链接和引用,通常可能会导致意外结果

  • 几乎所有需要使用基本url的HTML标记,如
    js/functions.js”>
    
    这通常是说
    /
    的冗长方式,但可以处理子目录问题


    这看起来可能是浪费时间,但当您有许多使用相同代码库的安装时,配置越少越好。

    作为可读性和灵活性之间的折衷,我将执行以下操作:

    // constants.php
    $base_uri = $_SERVER['SCRIPT_NAME']; // Always index.php (bootstrap), right?
    $base_uri = str_replace('index.php', '', $base_uri);
    define('BASE_URI', $base_uri);
    

    它不必发送不必要的混乱。您可以将
    $config['base\u url']
    值配置为
    /
    ,而不是将域包含在您的
    /config/config.php
    @Matt:如果您使用
    base\u url()
    或任何其他使用它的函数发送电子邮件,这可能是一个非常糟糕的主意(链接、图像等)。可能还有其他陷阱,但我现在想不出任何陷阱,但我认为这可能会导致一些意想不到的结果。我不认为OP与PHP源代码有关,但HTML输出(
    “给页面增加了很多权重”
    )。这仍然会打印完整的基本url,事实上,如果您在url中使用
    index.php
    (这是
    site\u url()
    base\u url()
    -site url打印
    index.php
    部分之间的细微差别)。通常,短标记也不受欢迎。
    // constants.php
    $base_uri = $_SERVER['SCRIPT_NAME']; // Always index.php (bootstrap), right?
    $base_uri = str_replace('index.php', '', $base_uri);
    define('BASE_URI', $base_uri);
    
    <script src="<?php echo BASE_URI; ?>js/functions.js"></script>
    
    <link rel="stylesheet" href="<?= site_url('css/main.css') ?>" />
    <script src="<?= site_url('js/jquery.js); ?>"></script>
    <script src="<?= site_url('js/functions.js); ?>"></script>
    ...
    <img src="<?= site_url('images/dolphin.png'); ?>" />