CodeIgniter:外部文件未应用CSS

时间:2019-02-23 08:34:55

标签: php css codeigniter

我的<CI root>/css/menus.css中的CSS代码未应用。显示的文件没有CSS。

这是我的标题模板:

<html>
    <head>
        <title>air de java</title>
        <link rel = "stylesheet" type = "text/css" 
        href = "<?= base_url('css/menus.css'); ?>" media="all">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>AIR DE JAVA</h1>
        ...

当我将href属性中的PHP调用替换为“ http://localhost/fil/index.html”时,出现404错误(index.html是带有h1标签的虚拟文件)。

我已经安装了url插件。在我的控制器中,我有:

$this->load->helper('url');

base_url()函数返回预期的URL(“ http://localhost/fil/css/menus.css”)

值得注意的是,我在Windows上使用XAMPP,这是我的httpd.conf的重定向部分:

<Directory "C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks Includes ExecCGI

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>

别名:

ScriptAlias /fil/ "C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/"

我花时间在网上搜索,但没有成功。

编辑:

CodeIgniter的行为很奇怪:它似乎指向我文件的旧版本。我看到它是因为单击按钮会调用Javascript函数,该函数的旧版本包含此行alert("enable");,现在我不再有此行,但是该按钮仍然存在,然后单击它会触发chrome的通知... 很奇怪。我试图按CTRL + F5绕过Chrome的缓存,但是没有成功。来自资源管理器的问题是相同的:问题来自CodeIgniter。但为什么?另外,Chrome的调试器指出了menus.css的加载错误: plz have a look at this

编辑

我查看了Apache日志,这是我发现的内容:

  

[2019年2月23日星期六18:58:59.817271] [win32:error] [pid 13940:tid 1900] [client :: 1:50408] AH02102:C:/ Users / lolve / Dropbox / air de java / air_de_java_appliperso2 /css/menus.css不可执行;确保解释后的脚本具有“#!”要么 ”'!”第一行,引荐来源:http://localhost/fil/   [2019年2月23日星期六18:58:59.817271] [cgi:error] [pid 13940:tid 1900](9)坏文件描述符:[client :: 1:50408] AH01222:不知道如何生成子进程: C:/ Users / lolve / Dropbox / air de java / air_de_java_appliperso2 / css / menus.css,引荐网址:http://localhost/fil/

1 个答案:

答案 0 :(得分:1)

您没有提到为什么使用该ScriptAlias,但这就是问题所在。您引用的Apache日志记录显示:

  

... menus.css不可执行; ...引荐来源:http://localhost/fil/

所以您访问了http://localhost/fil/,Apache尝试执行您的CSS,这当然没有意义。 Apache为什么要尝试这样做?因此:

ScriptAlias /fil/ "C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/"

根据the Apache documentation for ScriptAlias

  

ScriptAlias指令还具有将目标目录标记为仅包含CGI脚本的作用。

因此Apache认为fil/目录中的所有内容都是可执行的CGI脚本。当您尝试访问fil/css/menus.css时,Apache认为它是某种CGI脚本,并尝试执行它。那是行不通的-Apache应该将文件作为文本发送到浏览器,浏览器可以解析该文件并使用它来设置页面样式。

您是否有使用该ScriptAlias的特定原因?对于常规的Codeigniter安装,您不应该需要它,而只能将其用于某些特定的(不是很常见)要求。如果可以,请摆脱它,然后重新启动Apache。如果确实需要,则需要更改其指向的目录,以使Codeigniter正常工作。