CodeIgniter: CSS не применяется из внешнего файла - PullRequest
0 голосов
/ 23 февраля 2019

Код 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");, и теперь у меня больше нет этой строки, но кнопка все еще там,и нажмите на него, чтобы вызвать уведомление Chrome ... Очень странно. Я пытался нажать CTRL + F5, чтобы обойти chrкеш ом, но безуспешно.От проводника то же самое: проблема исходит от CodeIgniter.Но почему?Кроме того, отладчик Chrome указал на тот факт, что произошла ошибка с загрузкой menus.css: plz have a look at this

EDIT

Iвзглянул на логи Apache, и вот что я нашел:

[сб 23 февраля 18: 58: 59.817271 2019] [win32: ошибка] [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/ [сб 23 февраля 18: 58: 59.817271 2019] [cgi: ошибка] [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 голосов
/ 24 февраля 2019

Вы не упомянули, почему вы используете это ScriptAlias, но это проблема.Цитируемая вами запись журнала Apache:

... menus.css не является исполняемой;... 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:

Директива ScriptAlias ​​имеет дополнительный эффект маркировки целевого каталогакак содержащий только сценарии CGI.

Таким образом, Apache считает, что все, что находится внутри каталога fil/, является исполняемым сценарием CGI.Когда вы пытаетесь получить доступ к fil/css/menus.css, Apache думает, что это какой-то сценарий CGI, и пытается его выполнить.Это не сработает - Apache должен просто отправить этот файл в виде текста в браузер, который может его проанализировать и использовать для стилизации страницы.

У вас есть какая-то конкретная причина для использования этого ScriptAlias?Вам не нужно это для обычной установки Codeigniter, вы должны использовать ее только для некоторых конкретных (и не очень обычных) требований.Избавьтесь от него, если можете, и перезапустите Apache.Если вам это нужно, вам нужно изменить каталог, на который он указывает, чтобы заставить Codeigniter работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...