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
文件夹中的任何文件并将其粘贴到development
和production
文件夹中。
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" />
【讨论】:
文件 application/config/config.php 我应该删除它吗? 您可以,只要在development
和production
文件夹中都有一份副本。你可以用database.php
做同样的事情
好吧,我照你说的做了,但我的链接显示为不存在的链接,例如localhost/assets/style.css。
您需要将其设置为 localhost $config['base_url'] = 'http://localhost/<namespace>'
的正确 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