Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/APACHE:我可以自动添加到.js文件吗?_Php_Javascript_Apache_.htaccess - Fatal编程技术网

PHP/APACHE:我可以自动添加到.js文件吗?

PHP/APACHE:我可以自动添加到.js文件吗?,php,javascript,apache,.htaccess,Php,Javascript,Apache,.htaccess,我想使用以下工具自动预编所有js文件: var SITE_ROOT = 'http://www.mydomain.com'; 这可以在.htaccess中像在php文件中一样完成吗?如果可以,怎么做 我想您正在搜索。我想您正在搜索。您可以使用mod_重写规则和一个小php文件来完成您正在搜索的内容: js_wrapper.php: <?php // Open a javascript file provided by ?file=somefile.js and to prepend so

我想使用以下工具自动预编所有js文件:

var SITE_ROOT = 'http://www.mydomain.com';

这可以在.htaccess中像在php文件中一样完成吗?如果可以,怎么做

我想您正在搜索。

我想您正在搜索。

您可以使用mod_重写规则和一个小php文件来完成您正在搜索的内容:

js_wrapper.php:

<?php
// Open a javascript file provided by ?file=somefile.js and to prepend some content

$file = $_GET['file'];

// Checks that the file exists on the system and that it ends in '.js'
// The RewriteCond's do the same thing, but this prevents direct 
// calls to js_wrapper.php as well
if(!is_file("./" . $file) OR !preg_match('#\.js$#', $file)) {
    // 404
    header("HTTP/1.0 404 Not Found");
    print '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL ' . $_SERVER['REQUEST_URI'] . ' was not found on this server.</p> 
<hr> 
</body></html>';

}

header("Content-type: text/javascript");

// Begin prepended content
?>
// Auto-prepended by js_wrapper
var SITE_ROOT = 'http://www.mydomain.com';
// End auto-prepend

<?php 
// Output the original file
echo file_get_contents($file);
?>
# Pass all requests to js/some/script.js through js_wrapper.php?file=js/some/script.js
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.js$
RewriteRule ^js/(.*)$  js_wrapper.php?file=js/$1  [L,NC,QSA]
如果脚本不在名为“js”的文件夹下,则应修改RewriteRule指令以反映不同的路径

或者。。。 因为在您的示例中,您只是在开始时定义了一个变量,如果这就是您想要做的全部,那么您应该能够通过在包含js脚本的页面的
块中使用
块来实现这一点。js脚本将能够访问您在那里定义的任何变量。这更简单,更易于维护,使用更少的“魔法”(阅读呈现的html源代码和js的人不会理解前置数据的来源,除非他们阅读.htaccess),这也是我可能会做的事情,您正试图完成的

<head>
... stuff ...
    <script type="text/javascript">
        var SITE_ROOT = 'http://www.example.com';
    </script>
    <script type="text/javascript" src="/js/some_script.js"></script> 
    <script type="text/javascript" src="/js/some_other_script.js"></script> 
... stuff ...
</head>

... 东西
var SITE_ROOT=http://www.example.com';
... 东西

您可以通过一个mod_重写规则和一个小php文件来完成您想要的:

js_wrapper.php:

<?php
// Open a javascript file provided by ?file=somefile.js and to prepend some content

$file = $_GET['file'];

// Checks that the file exists on the system and that it ends in '.js'
// The RewriteCond's do the same thing, but this prevents direct 
// calls to js_wrapper.php as well
if(!is_file("./" . $file) OR !preg_match('#\.js$#', $file)) {
    // 404
    header("HTTP/1.0 404 Not Found");
    print '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL ' . $_SERVER['REQUEST_URI'] . ' was not found on this server.</p> 
<hr> 
</body></html>';

}

header("Content-type: text/javascript");

// Begin prepended content
?>
// Auto-prepended by js_wrapper
var SITE_ROOT = 'http://www.mydomain.com';
// End auto-prepend

<?php 
// Output the original file
echo file_get_contents($file);
?>
# Pass all requests to js/some/script.js through js_wrapper.php?file=js/some/script.js
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.js$
RewriteRule ^js/(.*)$  js_wrapper.php?file=js/$1  [L,NC,QSA]
如果脚本不在名为“js”的文件夹下,则应修改RewriteRule指令以反映不同的路径

或者。。。 因为在您的示例中,您只是在开始时定义了一个变量,如果这就是您想要做的全部,那么您应该能够通过在包含js脚本的页面的
块中使用
块来实现这一点。js脚本将能够访问您在那里定义的任何变量。这更简单,更易于维护,使用更少的“魔法”(阅读呈现的html源代码和js的人不会理解前置数据的来源,除非他们阅读.htaccess),这也是我可能会做的事情,您正试图完成的

<head>
... stuff ...
    <script type="text/javascript">
        var SITE_ROOT = 'http://www.example.com';
    </script>
    <script type="text/javascript" src="/js/some_script.js"></script> 
    <script type="text/javascript" src="/js/some_other_script.js"></script> 
... stuff ...
</head>

... 东西
var SITE_ROOT=http://www.example.com';
... 东西

当然,服务器在服务这些请求方面做得更多,而不是直接链接到未处理的文件,但性能损失应该可以忽略不计。感谢brent,这看起来是一个很好的解决方案。同样感谢您编写了这样一个解释得很好的回答。当然,服务器在服务这些请求方面做得更多,而不是直接链接到未处理的文件,但是性能的影响应该可以忽略不计。感谢brent,这看起来是一个很好的解决方案。也谢谢你写了这样一个解释得很好的答案