编辑:

编辑:

我在用着:

  • CentOS 7
  • Apache 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 加载失败

通过将其添加到我的 vhost 文件:

<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>

答案1

我觉得我明白问题所在了。你SetHandler正在应用虚拟主机中所有可能的 URL,而不考虑它是否是 PHP 文件。因此所有内容都会传递给 PHP,即使它是一个静态文件。而且由于 PHP 将静态文件解释为 PHP,因此你会得到你想要的结果。

您应该只向处理程序发送对 PHP 文件的请求,通过文件名选择它们:

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

然后,您可以删除<Files>所添加的不必要的冗余位。

答案2

403 错误通常来自权限错误。它可能发生在目录或文件级别。

就您而言,从我所看到的情况(仅文件和 apache doc 根目录权限)来看,权限似乎没问题。

您能与我们分享父目录的权限吗?(可能是 /var/www/dev/ 的权限太严格)

如果权限不允许“其他”,0755 应该这样做......

chmod 0755 /var/www/dev

此外,/var/www/dev 应该属于“dev-admin”。如果不是这样,我建议更改它的所有权:

chown dev-admin: /var/www/dev

@Michael Hampton 是对的。您无需进行任何更改(在默认的 CentOS 7 Apache 配置上)。

哦!只是为了确保我们涵盖了所有基础... dev-admin 是 Apache 用户吗?

如果没有,您可以在主 Apache 配置中更改它,或者通过使用适当的用户更改 dev 目录(递归)。

相关内容