Если я сделаю следующее (это фактический / прямой путь к файлу JavaScript):
<script href="http://localhost/tpl/blue/js/functions.js" type="text/javascript"></script>
Он отлично работает, и JavaScript анализирует - так же, как и его значение.
Однако я хочу сократить путь к файлу JavaScript (так же как и кешированию), поэтому я переписываю все файлы JavaScript через .htaccess в cache.php (который обрабатывает кэширование).
.htaccess содержит следующее:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^js/(.+?\.js)$ cache.php?file=$1 [NC]
</IfModule>
cache.php содержит следующий код PHP:
<?php
if (extension_loaded('zlib')) {
ob_start('ob_gzhandler');
}
$file = basename($_GET['file']);
if (file_exists("tpl/blue/js/".$file)) {
header("Content-Type: application/javascript");
header('Cache-Control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
echo file_get_contents("tpl/blue/js/".$file);
}
?>
и я вызываю файл JavaScript примерно так:
<script href="http://localhost/js/functions.js" type="text/javascript"></script>
Но при этом JavaScript не анализируется? (если я позже вызываю функции, которые находятся внутри functions.js на странице, они не работают), - так это их проблема либо с cache.php, либо с правилом перезаписи? (потому что файл сам по себе работает нормально).
Если я получаю доступ к переписанному файлу -> http://localhost/js/functions.js напрямую, он печатает код JavaScript, как любой файл JavaScript, - поэтому я не понимаю, что я делаю неправильно ...
PS: Я пытался изменить mime / content-type на text / javascript, а также очистить кеш браузера - но не повезло.
Вся помощь приветствуется! :)