星阁 发表于 2011-11-9 17:55:26

大家帮我分析一下原因,为啥base标签不管用了呢

我的项目中默认控制器是welcome,默认action是 index();
代码如下:

<?php
class Welcome extends CI_Controller {

        function __construct()
        {
                parent::__construct();
        }

        function index()
        {
                $this->load->view('welcome_message');
        }
}

我的视图文件welcome-message.php里使用了base标签,像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta charset="utf-8">
      <title>Welcome to CodeIgniter</title>
      <base url ="<?= base_url() ?> "></base>
      <link type="text/css" rel="stylesheet" href="css/style.css" />
    </head>

然后在浏览器里浏览项目路径http://localhost/shekong/
由于设置了base url属性,网页的css文件能够找到,样式表加载上了,可以正常浏览。
如果把访问路径改成 http://localhost/shekong/index.php,也是没有问题,
但是如果访问路径改成 http://localhost/shekong/index.php/welcome/
或者 http://localhost/shekong/index.php/welcome/index 的话
网页可以显示,但是css文件没有加载成功,用火狐查看,发现提示我没有找到
http://localhost/shekong/index.php/welcome/index/css/style.css
说明base标签没有起作用,这是为啥呢?该怎么解决啊?~

Hex 发表于 2011-11-9 19:09:49

如果是 CI 2.0 以上版本,应该是服务器配置有问题。
是 apache 吗?

qi_ruo 发表于 2011-11-9 19:16:12

改为<base href="<?php echo base_url() ?>" />
不过我觉得还是直接把url写到js和css的路径里好

回不去的甜 发表于 2011-11-9 21:26:41

这个还真不知道 来看看学习下

星阁 发表于 2011-11-9 23:07:59

是的,的确是这样写就可以了:<base href="<?php echo base_url() ?>" />,
base标签 没有 url 属性,我自创了一个 url 属性,呵呵~
我用base标签主要是觉得这样管理比较方便,包括页面中的img 的 src属性 中图片的路径,css中设置的背景图片的路径,什么的,都可以得到一个基准的前缀,每个图片只需要写相对路径就好了,比如 <img src='images/pic1.jpg'>,就能找到http://localhost/shekong/images/pic1.jpg.
恩,主要是这么考虑的。

菜鸟 发表于 2011-11-9 23:29:57

星阁 发表于 2011-11-9 23:07 static/image/common/back.gif
是的,的确是这样写就可以了:

:handshake借鉴了 ~~~~
页: [1]
查看完整版本: 大家帮我分析一下原因,为啥base标签不管用了呢