CI-CodeIgniter框架之前有过关注,近期有个小项目打算来用一下,发现其在application文件下的访问权限被限制了,一些资源文件CSS,JS,img等资源文件都无法正常加载,谷歌,百度以后,发现有好多朋友碰到类似的问题,使用CI框架css文件无法加载,js文件无法加载,图片文件无法加载等等类似的问题,解决的方法也是多种多样,其中一种是将资源文件和application文件剥离,把资源文件放到根目录,然后用CI自带的函数的调用,感觉这样会给开发带来一些不便利,影响项目的完整性。
通过修改.htaccess文件增加css,js,img等类型资源文件的访问权限,来解决CI-CodeIgniter框架不能加载css文件,js文件和图片格式文件等类型文件的方法:
于是,通过寻找发现,在application文件夹下有个.htaccess的文件,其中的配置影响的目录的访问和权限。目前开发使用的CI版本是3.1.6,application目录结构如下:
.htaccess文件的初始内容是这样的:
限制了本目录被任意用户访问,所以访问用户访问都显示403禁止访问。访问本文件夹下的文件,是行不通的,无论是是否已经设置了CI的配置文件的base_url()参数还是别的什么方法:
如果修改下.htaccess文件,使用apache的FilesMatch指令,排除一些资源文件,可以让用户正常访问,css,js,img等类型的文件。
增加该指令以后,刷新页面,该文件下指定扩展名类型的资源文件就可以访问了,而且项目的开发文件和资源都在一个目录下,方便管理和打包。没有其他的副作用。
刚才不能被访问的css文件现在可以正常访问了,我这边是放在views文件夹下的template文件夹中的静态资源文件中,这样设置以后,你可以根据实际需要把css,js,img等资源类文件放置到该目录下的任何位置,都不影响访问。
至此,问题解决,感觉CI整体对于前端模板处理有些过于简单,刚接触的用户,如果按照之前的方式来加载css,js,img文件,刷新项目页面后,页面没有排版,各种资源文件直接来个403,简直是一脸懵逼,文档中关于前端模板处理流程也是简单的带过,没有什么说明,有点太敏捷了,敏捷过头了,学习成本反而增加了也不是个好事~~~