我有一个基于Apache / PHP的服务器,我通过js
中的以下行将Apache作为PHP执行html
,css
和/etc/mime.types
文件:
application / x-httpd-php phtml pht php js html css
我们之所以这样做是因为即使我们保存为.html
/ .js
/ .css
的任何文件几乎完全不是PHP,我们也需要在其中进行一些模板处理(对于例如,根据我们是在现场还是在测试服务器上更改某些URL的域名。)
麻烦的是,这种使Apache将这些文件视为PHP的方法会导致它们以错误的MIME类型返回,这至少会破坏Chromium中的css
文件,并且可能在其他浏览器中具有令人讨厌的效果太
有没有办法可以告诉Apache以PHP格式执行这些文件,但仍然使用正确的MIME类型输出文件扩展名?我不想手动粘贴
<?php
header("Content-type: text/css");
?>
位于我们所有.css
个文件的顶部。
答案 0 :(得分: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>
答案 1 :(得分:1)
我觉得值得注意的是,我最终需要提出这个问题的唯一原因是我采用了错误的方法来处理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>
答案 2 :(得分:0)
您可以通过两种方式实现:
创建.htaccess
文件。
现在在此文件中,将所有PHP文件都读取为.js
或.css
。理想情况下,您将拥有以下文件:style.css.php
,scripts.js.php
并由Apache执行,但用户将获取style.css
,scripts.js
等网址。
使用 Mime类型。
正如您所说,通过使用以下内容,您可以在PHP中执行这些操作。
application/x-httpd-php phtml pht php js html css
或者另一种方式是:
<FilesMatch "^.*?css*?$">
SetHandler php5-script
</FilesMatch>