1

我有一个基于 Apache/PHP 的服务器,我在其上执行了 Apache jshtmlcss通过以下行中的 PHP 文件/etc/mime.types

应用程序/x-httpd-php phtml pht php js html css

我们这样做是因为即使我们保存为.html/ .js/.css的任何文件几乎完全是非 PHP 的,我们也需要在它们中做一些模板化(例如,根据我们是在现场还是在测试中更改某些 URL 的域服务器)。

问题是,这种让 Apache 将这些文件视为 PHP 的方法会导致它们返回错误的 MIME 类型,这至少会破坏cssChromium 中的文件,并且可能还会在其他浏览器中产生令人讨厌的影响。

有没有办法告诉 Apache 将这些文件作为 PHP 执行,但仍以正确的 MIME 类型输出它们的文件扩展名?我不想手动粘贴

<?php
  header("Content-type: text/css");
?>

在我们所有.css文件的顶部。

4

3 回答 3

2

我们这样做是因为即使我们保存为 .html/.js/.css 的任何文件几乎完全是非 PHP 的,我们也需要在它们中做一些模板化

那么为什么不在主文档中做动态部分,无论如何你都是动态的呢?通过 PHP 解释器运行所有资源是一种浪费。

对于 JavaScript:

<script>
domain = "<? echo $domain; ?>";  <----- dynamic bits here
</script>
<script src="xyz.js"></script>   <----- you can use them in xyz.js

对于 CSS:

<link rel="stylesheet" href="stylesheet.css">

<style type="text/css">
 /* insert dynamic CSS here, overriding parts from the static style sheet */

 .my_div { color: <? echo $color; ?> }

</style>
于 2013-02-14T15:41:46.440 回答
2

似乎值得注意的是,我最终需要问这个问题的唯一原因是我采用了错误的方法来让PHP.js执行.css文件。

不要修改您的mime.types文件来实现这一点。相反,在您的 Apache 配置(或.htaccess文件)中,使用如下调用:

<Files *.js>
    ForceType application/x-httpd-php
    Header set Content-Type "application/javascript"
</Files>
<Files *.css>
    ForceType application/x-httpd-php
    Header set Content-Type "text/css"
</Files>
于 2014-12-14T22:08:07.463 回答
0

你可以通过两种方式做到这一点:

  1. 创建一个.htaccess文件。

    现在在这个文件中,将所有 PHP 文件读取为.js.css. 理想情况下,您将拥有类似: 的文件style.css.phpscripts.js.php并由 Apache 执行,但用户将获取 URL 为style.css,scripts.js等。

  2. 使用Mime 类型

    正如您已经说过的,通过使用以下内容,您可以使这些在 PHP 中执行。

    application/x-httpd-php phtml pht php js html css
    

    或者另一种方式是这样的:

    <FilesMatch "^.*?css*?$">
        SetHandler php5-script
    </FilesMatch>
    
于 2013-02-14T15:41:13.730 回答