我有codeigniter base_url的问题。
我的base_url是$config['base_url'] = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME'])...
(http://test.localhost/)...但是当我执行ajax请求时,我使用<?= base_url(); ?>installer/test
,响应是“不允许直接访问脚本”。
我尝试添加到base_url index.php(http://test.localhost/index.php/)并解决了这个问题,但现在当我使用base_url加载一个css时这样:&lt; ?= base_url(); ?>assets/css/installer.css
css没有加载但是如果我删除index.php正确加载css,但是ajax请求响应“不允许直接访问脚本”。
显然我认为我的配置有问题,但我没有发现错误。我需要在同一base_url
下加载ajax请求和css,因为代码很大,我无法更改base_url
的所有实例。
答案 0 :(得分:1)
问题可能在...中
$_SERVER['HTTP_HOST']
很少在localhost中运行,有时也适用
未能检测到主机路线。
CSS样式表需要纯目录URL,它从不包含任何内容
包含'localhost/index.php'
尝试使用...
$config['base_url'] ='http://test.localhost/';
href="<?php echo base_url(); ?>assets/css/installer.css"
'url' : '<?php echo base_url(); ?>index.php/
您的控制器路径&#39; 答案 1 :(得分:1)
base_url
和site_url
应该是这样的
base_url() = http://test.localhost/
site_url() = http://test.localhost/index.php/
如果您需要加载网址资源(如css,js,图片等),请使用base_url()
,否则site_url()
会更好。
这意味着在您的ajax请求中,您可以像这样设置网址
var serviceUrl = "<?php echo site_url(); ?>your_controller/your_method";
var returnResult = $.ajax({
url: serviceUrl,
data: {'id': id, .....},
type: 'post',
dataType: 'json'
});
或者您可以像这样设置网址
var serviceUrl = "<?php echo base_url(); ?>index.php/your_controller/your_method";
var returnResult = $.ajax({
url: serviceUrl,
data: {'id': id, .....},
type: 'post',
dataType: 'json'
});
这可能会帮助你......谢谢!
答案 2 :(得分:0)
我花了几个小时遇到这个问题,但是以不同的方式解决了这个问题。可以看到,我刚刚在应用程序文件夹之外创建了一个Assets文件夹。最后,我将样式表链接到页面标题部分。文件夹结构在图像下方。
在执行此操作之前,您应该在控制器类方法/ __ constructor文件中或在 autoload.php 文件中包含 url 帮助文件。还要在以下文件 application / config / config.php
中更改$config['base_url'] = 'http://yoursiteurl';
如果将其包含在控制器类method / __ constructor中,则它看起来像
public function __construct()
{
$this->load->helper('url');
}
或如果您加载自动加载文件,则看起来像
$autoload['helper'] = array('url');
最后,添加样式表文件。 您可以通过不同的方式链接样式表,将其包含在内部部分
-> <link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css" type="text/css" />
->或
<?php
$main = array(
'href' => 'assets/css/style.css',
'rel' => 'stylesheet',
'type' => 'text/css',
'title' => 'main stylesheet',
'media' => 'all',
'index_page' => true
);
echo link_tag($main); ?>
->或
最终,我得到了更可靠的代码清理器概念。只需在您的 application / config / styles.php 文件夹中创建一个名为 styles.php 的配置文件。 然后在如下所示的 styles.php 文件中添加一些链接<?php
$config['style'] = array(
'main' => array(
'href' => 'assets/css/style.css',
'rel' => 'stylesheet',
'type' => 'text/css',
'title' => 'main stylesheet',
'media' => 'all',
'index_page' => true
)
);
?>
调用/将此配置添加到控制器类方法如下
$this->config->load('styles');
$data['style'] = $this->config->config['style'];
在标题模板中传递此数据如下所示。
$this->load->view('templates/header', $data);
最后添加或链接您的css文件,如下所示。
<?php echo link_tag($style['main']); ?>
答案 3 :(得分:-1)
base_url
用于访问图像JS,文件和CSS,站点URL用于访问控制器的功能。base_url
index.php
不存在,但在{{{} 1}} site_url
pres end所以定义index.php
就像这样
base_url