假设我有一个像这样的目录结构
/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}}。一旦找到脚本,它就会返回它,因此只需要一个请求。
答案 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处理程序)。