CodeIgniter base_url(), localhost 中的链接给了我实时服务器

Posted

技术标签:

【中文标题】CodeIgniter base_url(), localhost 中的链接给了我实时服务器【英文标题】:CodeIgniter base_url(), link in localhost gives me to live server 【发布时间】:2015-06-11 01:28:53 【问题描述】:

我正在本地主机中的 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 live 服务器地址,所以我不能在 localhost 中做任何事情。

有人可以帮帮我吗?

【问题讨论】:

检查$config['base_url']中的APPPATH . 'config/config' . EXT是否设置好。编辑:没看到菲利普的回答... 【参考方案1】:

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

开发 => 应用程序/配置/开发 生产 => 应用程序/配置/生产

然后复制主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 中的设置。

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

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

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

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

【讨论】:

文件 application/config/config.php 我应该删除它吗? 您可以,只要在developmentproduction 文件夹中都有一份副本。你可以用database.php做同样的事情 好吧,我照你说的做了,但我的链接显示为不存在的链接,例如localhost/assets/style.css。 您需要将其设置为 localhost $config['base_url'] = 'http://localhost/&lt;namespace&gt;' 的正确 url 或者您可以将其留空 $config['base_url'] = '' 如果您在本地工作,则需要确保 ENV=='development'index.php 最后,问题出在 .htaccess 中的 CI 中,使用 RewriteBase 我将其关闭【参考方案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/';

【讨论】:

定义基本 url 的最佳方法我长期以来一直面临一个问题,只有这个解决方案解决了我的问题,我希望我能给你 100 票..:)【参考方案3】:

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

对于添加文件(css、图像、js 等)使用如下

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

其余的东西使用以下

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

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

谢谢

【讨论】:

以上是关于CodeIgniter base_url(), localhost 中的链接给了我实时服务器的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 中的 base_url() 和 403 错误

AngularJS Codeigniter base_url 路径设置

php Configuracion para base_url en codeigniter

CodeIgniter 3 base_url 函数返回错误的 url

使用 jQuery Mobile 的 Codeigniter 有时会返回错误的 base_url()

CodeIgniter base_url(), localhost 中的链接给了我实时服务器