PHP / APACHE:我可以auto_prepend到.js文件吗?

时间:2010-08-09 09:25:08

标签: php javascript apache .htaccess

我想用以下方法auto_prepend_file我的所有js文件:

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

这可以在.htaccess中完成,就像它可以用于php文件一样,如果是这样,怎么样?!!!

2 个答案:

答案 0 :(得分:1)

你可以用mod_rewrite规则和一个小的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);
?>

<强> htaccess的:

# 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指令以反映不同的路径。

另外...

因为在您的示例中,您只是在开始时定义变量,如果这是您要做的全部,您应该能够通过在{{1}中使用<script>块来实现此目的。包含js脚本的页面块。 js脚本将能够访问您在那里定义的任何变量。这更简单,更容易维护,使用更少的'魔术'(人们阅读渲染的html源和js将无法理解前置数据来自哪里,除非他们读取.htaccess),我是怎么做的你可能会做什么的你我正努力完成。

<head>

答案 1 :(得分:0)

我认为您正在搜索mod_layout