【问题标题】:Parse js/css as a PHP file using htaccess使用 htaccess 将 js/css 解析为 PHP 文件
【发布时间】:2012-05-23 14:46:17
【问题描述】:

您好,我一直在努力在 htaccess 上执行以下操作,但它似乎不起作用。

有人可以帮我吗?

AddType application/x-httpd-php .js

我尝试了 php4,php5 版本的所有东西,我可以在谷歌上找到但我没有运气。

我错过了什么?

在我的 file.js 中

以下是...

<?php 

$(document).ready();//jquery/javascript
?>

我预计会出现 php 致命错误,但我将上述内容完全视为纯文本。

【问题讨论】:

    标签: php javascript .htaccess


    【解决方案1】:

    如果您只想使用 .htaccess 配置来执行此操作(谁想在 每个 PHP 文件中设置标题?):

    <FilesMatch "\.css$">
      SetHandler application/x-httpd-php
      Header set Content-type "text/css"
    </FilesMatch>
    
    <FilesMatch "\.js$">
      SetHandler application/x-httpd-php
      Header set Content-type "application/javascript"
    </FilesMatch>
    

    【讨论】:

    • 如果标题行出现 500 内部服务器错误,请确保在 apache 配置中启用了 mod_headers。谢谢李!
    【解决方案2】:

    试试:

    <FilesMatch "\.(js)$">
    AddHandler application/x-httpd-php .js
    </FilesMatch>
    

    【讨论】:

    • 你必须这样做才能让 PHP 处理你的 .js 文件,然而,你不需要在 指令中使用 AddHandler,但如果你使用 SetHandler 就可以了。但是当你使用这个处理程序时,响应的 MIME 类型将默认为 text/html,我认为这不能在 .htaccess 中被覆盖,这意味着你需要在 PHP 中(重新)设置 MIME 类型,根据@Steve 的回答。
    【解决方案3】:

    如果我是正确的,您的 PHP JS 文件必须带有 content-type 的标头:application/x-javascript,否则它不会被解释为 JS。

    Header("content-type: application/x-javascript");

    【讨论】:

    • &lt;?php header("content-type: application/x-javascript"); 这就是我现在的输出...它需要先被处理为 php 文件类型,然后才能添加内容类型否?
    • 我认为很多浏览器并不关心 JavaScript 文件的内容类型是什么,但有些人认为如果 CSS 文件是 text/html,那么它可能是一个花哨的 404,不会处理任何内容。
    【解决方案4】:

    如果您想让 PHP 在 Javascript 文件中工作,您只需将 Javascript 重命名为 javascript_file.js.php 并让 PHP 在其中工作。

    将其包含到您的页面中不会有任何问题。

    `

    【讨论】:

    • 我知道那是最好的,但是,在我的 notpad++ 上,我希望打开荧光笔而不是黑白 :)
    • 你还能使用&lt;script src="..."&gt;&lt;/script&gt;吗?还是必须使用php才能包含?
    【解决方案5】:

    一种可能是您未配置为允许使用 .htaccess 文件。

    你可以在你的 httpd.conf 中检查。

    您要确保将AllowOverride 设置为All

    例如

    来自

    <Directory />
      Options FollowSymLinks
      AllowOverride None
      Order deny,allow
      Deny from all
      Satisfy all
    </Directory>
    

    <Directory />
      Options FollowSymLinks
      AllowOverride All
      Order deny,allow
      Deny from all
      Satisfy all
    </Directory>
    

    【讨论】:

    • .htaccess 像我用RewriteRule . /index.php [L] 和那里的其他一些位测试过的那样工作(我尝试将它们全部删除,但是AddHandler application/x-httpd-php .js
    【解决方案6】:

    我对 .htaccess 了解不多,但我相信解决问题的部分方法是将 jQuery 移到 php 标签之外:

    <?php
    
    ?>
    </script>
        $(document).ready();
    <script>
    

    您的文件将被解析为任何其他 php 文件,因此您的 javascript 将在 javascript 标记内正常执行。

    如果您想在 javascript 中包含 php 变量,请这样做:

    <?php
        $time=time();
    ?>
    
        <script>
            $( document ).ready(function(){
                $("SPAN").text("<? echo $time; ?>");
            });
        </script>
        <SPAN></SPAN>
    

    以上代码将返回 SPAN 元素内的当前纪元时间戳

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2011-05-12
      • 2012-06-22
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多