Ресурс интерпретируется как таблица стилей, но передается с типом MIME text / html: «»

#php #wordpress #nginx

#php #wordpress #nginx

Вопрос:

Похоже на дубликат? Нет, это не так!

Это мои конфигурации:

  1. ОС: сервер Fedora 33
  2. PHP: PHP 7.4.13
  3. MySQL: MySQL 8.0

Я бы настроил WordPress на своем сервере следующим образом:

  1. Nginx работает с Интернетом.
  2. Nginx передает запросы в PHP-fpm.
  3. После этого PHP-fpm обрабатывает все.

Кажется, все работает нормально, но я не знаю, что, черт возьми, происходит? Буквально, любая тема не работает. Я перепробовал так много тем, но ни одна из них, похоже, не работает.

Взгляните на страницу: https://blog.harshrathod.dev

Я получаю это странное предупреждение, и стили вообще не вступают в силу:

 Resource interpreted as Stylesheet but transferred with MIME type text/html: "<URL>".
(index):29 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dashicons.min.css?ver=5.6".
(index):30 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/admin-bar.min.css?ver=5.6".
(index):31 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dist/block-library/style.min.css?ver=5.6".
(index):32 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dist/block-library/theme.min.css?ver=5.6".
(index):33 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-content/themes/twentynineteen/style.css?ver=1.8".
(index):34 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-content/themes/twentynineteen/print.css?ver=1.8".
 

Это моя конфигурация nginx:

 root        /usr/share/wordpress;

location / {
    try_files      $uri $uri/ =404;
    fastcgi_pass   127.0.0.1:4000;
    fastcgi_index  index.php;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
 

Комментарии:

1. Вероятно, это дубликат. Когда файл не найден, вы отправляете запрос, на /index.php который всегда отвечает test/html (это хорошо, потому что именно так работают постоянные ссылки). Проблема в том, что эти файлы не найдены — либо потому, что они отсутствуют, защищены для чтения, либо Nginx неправильно настроен для их поиска.

2. Хорошо, я предоставил свою конфигурацию nginx. Вы можете найти здесь что-нибудь странное?

3. Эта конфигурация отправляет запрос на PHP, который отвечает «доступ запрещен» как text/html . Вы должны начать с изменения location на location ~ .php$ , чтобы файлы, отличные от PHP, обрабатывались как статические файлы. Полный рецепт задокументирован здесь .

4. Хорошо, это решило мою проблему. Спасибо!

Ответ №1:

После прочтения этой проблемы я понял, что настоящая проблема связана с моей конфигурацией nginx.

Поскольку у меня есть только один и единственный маршрут, происходит то, что статические файлы также анализируются php-fpm и отправляются клиентам как html/txt .

Решение этой проблемы заключается в том, что нам нужно иметь два разных маршрута:

  1. Один для всего статического.
  2. Второй для обработки файлов php.

Итак, результирующая конфигурация nginx будет выглядеть следующим образом:

 root /usr/share/wordpress;

location / {
    index index.php;
}

location ~ .php$ {
    try_files      $uri $uri/ =404;
    fastcgi_pass   127.0.0.1:4000;
    fastcgi_index  index.php;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}