Код CSS в моем <CI root>/css/menus.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>
...
Когда я заменяю вызов PHP в атрибуте href на «http://localhost/fil/index.html», я получаю ошибку 404 (index.html — это фиктивный файл с тегом h1).
Я установил плагин URL. В моем контроллере у меня есть:
$this->load->helper('url');
Функция base_url() возвращает ожидаемый URL ("http://localhost/fil/css/menus.css").
Стоит заметить, что я использую XAMPP в Windows, и вот часть перенаправления моего 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");, и теперь у меня этой строки больше нет, но кнопка все еще там, и нажатие на нее вызывает уведомление хрома ... Очень странный. Я пытался нажать CTRL+F5, чтобы обойти кеш Chrome, но безуспешно. Из проводника то же самое: проблема исходит от CodeIgniter. Но почему? Также отладчик Chrome указал на то, что возникает ошибка с загрузкой menus.css:

РЕДАКТИРОВАТЬ
Я просмотрел журналы Apache и вот что нашел:
[Sat Feb 23 18:58:59.817271 2019] [win32:error] [pid 13940:tid 1900] [client ::1:50408] AH02102: C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/css/menus.css is not executable; ensure interpreted scripts have "#!" or "'!" first line, referer: http://localhost/fil/ [Sat Feb 23 18:58:59.817271 2019] [cgi:error] [pid 13940:tid 1900] (9)Bad file descriptor: [client ::1:50408] AH01222: don't know how to spawn child process: C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/css/menus.css, referer: http://localhost/fil/
извините, это было не совсем так: в моем браузере, если я пытаюсь получить доступ к "локальный/файл/css/menus.css", я получаю ошибку 500 и независимо от этого, если я пытаюсь заменить в своем файле header.php href (с вызовом php) по href='локальный/файл/css/menus.css' ничего не происходит, я получаю страницу без применения css. теперь должно быть понятнее.
Хорошо. Итак, проверив структуру папок, где именно вы сохранили menus.css?
он находится в папке <root>/css, где root — это каталог, содержащий приложение codeigniter и системные каталоги.
Хорошо. Из вашего файла XAMPP httpd.conf какое значение у вас есть для DocumentRoot ?
это DocumentRoot "C:/xampp/htdocs", но у меня есть псевдоним: ScriptAlias/fil/ "C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/"
Ну, я действительно не знаю, чего вы пытаетесь достичь, изменяя значения по умолчанию в вашем httpd.conf. Я предлагаю вам вернуть значения по умолчанию и проверить еще раз. <Directory "C:/xampp/htdocs"> и ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"
это потому, что сайт расположен в каталоге dropbox, поэтому я добавил заголовок «каталог» к каталогу dropbox и псевдоним «/ fil» к этому каталогу. Я нашел это в учебнике и показался естественным (естественная цель псевдонимов?).
@SamuelAsor: посмотрите, пожалуйста, проблема определенно исходит от codeIgniter.






Вы не упомянули, почему используете этот ScriptAlias, но проблема в этом. Запись журнала Apache, которую вы цитируете, показывает:
... menus.css is not executable; ... referer: http://localhost/fil/
Итак, вы посетили http://localhost/fil/, и Apache попытался выполнять вашего CSS, что, конечно, не имеет смысла. Почему Apache пытается это сделать? Из-за этого:
ScriptAlias /fil/ "C:/Users/lolve/Dropbox/air de java/air_de_java_appliperso2/"
Согласно документация Apache для ScriptAlias:
The ScriptAlias directive has the additional effect of marking the target directory as containing only CGI scripts.
Таким образом, Apache считает, что все, что находится внутри каталога fil/, является исполняемым сценарием CGI. Когда вы пытаетесь получить доступ к fil/css/menus.css, Apache думает, что это какой-то CGI-скрипт, и пытается его выполнить. Это не сработает — Apache должен просто отправить этот файл в виде текста в браузер, который сможет проанализировать его и использовать для оформления страницы.
У вас есть какая-то конкретная причина использовать это ScriptAlias? Вам не нужно это для обычной установки Codeigniter, вы будете использовать это только для некоторых конкретных (и не очень обычных) требований. Избавьтесь от него, если можете, и перезапустите Apache. Если вам это нужно, вам нужно будет изменить каталог, на который он указывает, чтобы заставить Codeigniter работать.
спасибо, я нашел этот ответ вчера и был готов написать его сейчас, но вы были быстрее. в любом случае, спасибо!