我的<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
的加载错误:
编辑
我查看了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/
答案 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正常工作。