Apache-2.4

瀏覽器不渲染 css 和 JS

  • April 9, 2019

我正在使用:

  • CentOS 7
  • 阿帕奇 2.4
  • php56-php-fpm
  • php72-php-fpm

在我的開發伺服器上。我設法得到它,所以我可以指定一個處理程序,它將把那個虛擬主機放在正確的 PHP 版本上,但是 CSS 和 JS 似乎出了問題。

我收到此錯誤:

scriptname.js 已載入,即使其 MIME 類型(“text/html”)不是有效的 JavaScript MIME 類型

最終導致致命錯誤。Google搜尋它導致我找到各種文章,我首先將以下內容添加到我的httpd.conf文件中:

AddType text/css .css
AddType text/javascript .js

但這沒有用。

然後我將它添加到我的 .htaccess 中,再次沒有成功。

然後我發現了一些建議這樣寫的東西:

AddType 'text/css; charset=UTF-8' .css

這確實修復了大部分 CSS - 但不是.js.

我如何獲得它以使一切按預期工作?

(注意:讓我知道要添加哪些文件內容,我會相應地編輯問題)

編輯:

我將錯誤消息歸結為:

使用源 /path/to/file.js 載入失敗

通過將其添加到我的虛擬主機文件中:

<Files *.js
 Header set Content-type "text/javascript"
</Files>

似乎去那個文件顯示:

拒絕訪問

那裡的文件權限:

drwxr-xr-x 2 dev-admin dev-admin    42 Apr  4 11:37 ./
drwxr-xr-x 4 dev-admin dev-admin    27 Mar 12 17:21 ../
-rw-r--r-- 1 dev-admin dev-admin 86927 Mar  1 15:14 jquery.min.js
-rw-r--r-- 1 dev-admin dev-admin  5094 Apr  4 11:37 main.js

文件標題:

在此處輸入圖像描述

完整的虛擬主機:

<VirtualHost *:80>
   ServerName site1.development
   DocumentRoot /var/www/dev/site1
   <Directory /var/www/dev/site1>
       # removing this shows the MIME type errors from before
       <Files *.css>
           Header set Content-type "text/css"
       </Files>
       # removing this shows the MIME type errors from before
       <Files *.js>
           Header set Content-type "text/javascript"
       </Files>

       SetHandler "proxy:fcgi://127.0.0.1:9072"

       AllowOverride all
       Options Indexes FollowSymLinks
   </Directory>
</VirtualHost>

我想我看到了問題。您SetHandler將應用於虛擬主機中的每個可能的 URL,而不管它是否是 PHP 文件。因此,所有內容都會傳遞給 PHP,即使它是靜態文件。而且因為 PHP 將靜態文件解釋為 PHP,所以您會得到結果。

您應該只向處理程序發送對 PHP 文件的請求,方法是按文件名選擇它們:

       <FilesMatch \.php$>
           SetHandler "proxy:fcgi://127.0.0.1:9072"
       </FilesMatch>

然後,您可以刪除<Files>您添加的不必要的冗餘位。

引用自:https://serverfault.com/questions/962226