codeigniter 基目录中的 css/image/js 文件问题
Posted
技术标签:
【中文标题】codeigniter 基目录中的 css/image/js 文件问题【英文标题】:Issue with css/image/js files in codeigniter base directory 【发布时间】:2013-12-28 21:15:06 【问题描述】:我一直在设置 .htaccess 文件以将所有请求重定向到 windows 7 中 xampp 下的 index.php 文件(从 url 中删除 index.php),并认为我可能为自己创建了一个问题...但话又说回来,它可能无关紧要。
我似乎在引用我在基本目录中为 css、图像和 js 设置的目录时遇到问题。我已经追踪了这个问题,但还不知道如何解决它。如果我导航回目录 ../css/stye.css 与 css/style.css ,则样式表将加载。如果我输入带有索引函数调用的基本 url 或基本 url,一切都会按预期加载:
http://localhost/site
http://localhost/site/home
现在当我添加控制器方法名称时
http://localhost/site/home/index
我的 css 不再包含(直到我进入 firebug 并导航回一个目录)
位于我的基本目录中的 .htaccess 文件(我发现它可以与 xampp 一起使用)中的代码如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
我公开承认,我对 .htaccess 文件的了解并不多。
CSS 链接:
<link rel="stylesheet" type="text/css" href="css/jmw.css" />
编辑
按照 Rajeev Ranjan 的建议编辑.htaccess 文件
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|css|images|js)
RewriteRule ^(.*)$ ./index.php/$1 [L]
我假设每个视图都像 index.php 文件本身一样工作,并以这种方式访问目录。在样式表、javascript 或图像调用前面使用 base_url() 函数时一切正常,但我试图不在视图文件的多个位置依赖 base_url() 函数。
【问题讨论】:
能否显示css href<link rel="stylesheet" type="text/css" href="">
编辑显示css href
【参考方案1】:
我也遇到了这个问题。请将此行放入您的.htaccess
文件中
RewriteCond $1 !^(index\.php|images|robots\.txt|css|img|js)
即。允许 css 。
万普:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css|img|js)
RewriteRule ^(.*)$ ./index.php/$1 [L]
并通过调用 css
<link rel="stylesheet" href="<?php echo base_url();?>css/main/style.css"/>
或者,
<link rel="stylesheet" href="<?php echo base_url('css/main/style.css');?>"/>
【讨论】:
仍然没有骰子。你会碰巧有我可以比较的 xampp 为你工作的 .htaccess 文件吗? 我寄予厚望,但这仍然没有解决我的问题。如果我在 config.php 或 routes.php 文件中错误配置了某些内容,这可能会导致我的问题吗?【参考方案2】:你可以试试这个,例子
<link rel="stylesheet" type="text/css" href="<?=base_url()?>css/jmw.css" />
【讨论】:
是的,这可以解决问题,但文件夹已移至基本目录以解决在代码中使用 base_url() 的需要。 你想使用另一个css文件夹的css文件吗? 问题不仅在于 css 目录,还在于 image 和 js 目录。如果我在调用 css 和 js 目录之前使用 base_url(),我仍然需要进入代码并在每个视图中的每个图像前面添加 base_url() ......这就是我想要的远离我最初将目录移动到基本目录的时候。 我想你可以参考这个***.com/questions/5450095/… 谢谢,但再次......问题不仅与css目录有关,还与js和images目录有关。我宁愿不对视图中显示的每个图像都使用 base_url() :/【参考方案3】:RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css|img|js)
RewriteRule ^(.*)$ ./index.php/$1 [L]
In second line ie;
RewriteCond $1 !^(index\.php|images|robots\.txt|css|img|js)
You have to pass the folder name of your css, js and image files like:
RewriteCond $1 !^(index\.php|images|robots\.txt|css|img|js|assets|images)
【讨论】:
【参考方案4】:终于明白了!在过去几个月使用 codeigniter 并更广泛地了解 .htaccess 文件中到底发生了什么之后,解决方案是显而易见的。由于 .htaccess 文件指向控制器目录,因此每当我尝试从“/images”等访问我的图像/js/css 文件时,它都会在控制器目录中查找。
为了解决这个问题,我在 config.php 中设置了 base_url = '',并在我调用 images/js/css 的地方横向返回了一个目录 '../images/file.png'。简单的解决方案,我的大脑花了一点时间来点击:)
【讨论】:
以上是关于codeigniter 基目录中的 css/image/js 文件问题的主要内容,如果未能解决你的问题,请参考以下文章
子目录中的 CodeIgniter 站点,htaccess 文件可能会干扰主目录中的 htaccess 文件?
使用 htaccess 删除子目录中的 codeigniter index.php