捕获所有javascript <script>请求服务器端</script>

时间:2011-12-05 05:11:30

标签: javascript load apache2

假设我有一个像这样的目录结构

/var/www
└── test.js

在javascript中加载脚本的最常见方法可能是通过

<script src='test.js'></script>

现在假设我不断移动文件。现在目录结构看起来像

/var/www
└── foobar
    └── test.js

而不是遍历每个文件并将路径更改为

<script src='foobar/test.js'></script>

我想“抓住”服务器上的<script>请求(apache2),并查找test.js文件。这种搜索非常类似于shell如何使用PATH变量来搜索命令。反正有吗?

现在在人们开始质疑我的前提之前,让我说两件事:

- 我无法控制何时移动文件以及

的位置

-I 可以设置php脚本来查找文件并返回客户端的完整路径,但是,这需要一个额外的xmlhttprequest调用。


编辑我需要捕获所有请求的原因是减少请求的总数。目前,我正在查询服务器以查找脚本的完整路径名(第一个请求),然后我将该路径名传递给<script src=...>(第二个请求)。相反,我想要的是调用<script src='test.js'>,然后让服务器在当前文件夹中查找“test.js”,如果这不起作用,请查看所有其他指定的文件夹,在本例中为{{ 1}}。一旦找到脚本,它就会返回它,因此只需要一个请求。

2 个答案:

答案 0 :(得分:3)

您可以设置.htaccess文件,将所有js个请求重定向到一个文件。这样,您的所有脚本都将被重定向到您的服务器端页面,该页面根据脚本的名称决定要传递的js脚本:

htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)\.js$ server_side_script.php [NC,L]

答案 1 :(得分:0)

我知道这样做的唯一方法是设置自定义404处理程序。创建一个的最简单方法是使用.htaccess文件。添加如下内容:

ErrorDocument 404 /url.php

然后在url.php中你会“找到”.js文件并输出内容。确保将HTTP标头设置为200:

<?php
//
header("HTTP/1.0 200 OK");
...
...
?>

以上假设当页面加载时,最初将找不到.js文件(这将启动404处理程序)。