本地主机中的 CodeIgniter base_url(), link 让我可以使用实时服务器

CodeIgniter base_url(), link in localhost gives me to live server

我正在本地主机的 CodeIgniter 中处理网页,但此网页也在实时服务器中。

所有 link 都使用 base_url()

例如:

<link rel="stylesheet" href="<?= base_url() ?>assets/style.css">
<script src="<?= base_url() ?>assets/jquery-ui.min.js"></script>
...
<a href="<?= base_url() ?>show/edit/other">

当我在 localhost 中单击 link 时,它会提供 mi 实时服务器地址,因此我无法在 localhost 中执行任何操作。

有人可以帮我吗?

您可以将下面的代码设置为 config.php 并且它将占用相关 url 如果您在 localhost 中那么它将占用 localhost 如果您在实时服务器中那么它将占用实时url.

$root=(isset($_SERVER['HTTPS']) ? "https://" : "http://").$_SERVER['HTTP_HOST'];
$root.= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;

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

您可以在 application/config 中创建两个文件夹,一个用于生产(实时服务器),一个用于开发(本地主机)

  • 发展=> application/config/development
  • 生产 => application/config/production

然后复制主 application/config 文件夹中的任何文件并将其粘贴到 developmentproduction 文件夹中。

application/config/development/config.php

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

application/config/production/config.php

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

根据您在 index.php 中的 ENV 常量,它将从生产或开发文件夹加载设置。因此,如果 ENV == 'development' 将使用 application/config/development 中的设置。

如果您想要资产的相对路径,请将其添加到 html

HEAD
<base href="<?php echo base_url();?>" />

然后你就可以像这样引用你的资产

<link rel="stylesheet" href="assets/styles.css" />

无需触摸config.php。按照这个解决方案,即使在通过 htaccsss

删除 index.php 之后,它也可以在本地和现场工作

对于添加文件(css、图像、js 等),请按如下方式使用

  <?php echo base_url('assets/js/test.js');?>

其余部分使用以下内容

   <?php echo site_url('controller/metho_name');?>

它将在实时或本地服务器中自动处理并保持您的 config.php 原样。

谢谢