CodeIgniter base_url(),localhost中的链接为我提供了直播服务器

时间:2015-04-06 16:03:42

标签: codeigniter url hyperlink base-url

我正在我的localhost中的CodeIgniter网页上工作,但这个网页也在实时服务器中。

它为所有链接使用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中的链接时,它会提供mi实时服务器地址,因此我无法在localhost中执行任何操作。

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:2)

您可以将以下代码设置为config.php,如果您在localhost中它将获取相关URL,然后它将使用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/';

答案 1 :(得分:2)

您可以在application/config内创建两个文件夹,一个用于生产(实时服务器),另一个用于开发(localhost)

  • development =&gt;应用/配置/发展
  • production =&gt;应用/配置/生产

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

<强>应用/配置/开发/ config.php中

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

<强>应用/配置/生产/ 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" />

答案 2 :(得分:0)

无需触摸config.php。遵循这个解决方案,即使在通过htaccsss删除index.php之后,它也可以在本地和现场工作

用于添加文件(css,images,js等),请使用如下

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

以及其余的东西使用以下

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

它将在实时或本地服务器中自动处理并保持config.php不变。

由于