Захват всех javascript <script>запросов на стороне сервера - PullRequest
1 голос
/ 05 декабря 2011

Предположим, у меня есть структура каталогов, подобная

/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. Этот поиск очень похож на то, как оболочка использует переменную PATH для поиска команд. Есть ли в любом случае, чтобы сделать это?

Теперь, прежде чем люди начнут сомневаться в моей предпосылке, позвольте мне заявить о двух вещах:

-Я не могу контролировать, когда файлы перемещаются и где

-I может настроить скрипт php, чтобы найти файл и вернуть полный путь к клиенту, однако для этого потребуется один дополнительный вызов xmlhttprequest.


РЕДАКТИРОВАТЬ Причина, по которой мне нужно перехватывать все запросы, заключается в уменьшении общего количества запросов. В настоящее время я запрашиваю у сервера полный путь к скрипту (первый запрос), а затем передаю это имя пути <script src=...> (второй запрос). Вместо этого я хочу позвонить <script src='test.js'>, а затем заставить сервер искать «test.js» в текущей папке, а если это не сработает, искать во всех других указанных папках, в данном случае foobar/. Как только он найдет сценарий, он вернет его, поэтому потребуется только один запрос.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

вы можете установить файл .htaccess, который перенаправляет все ваши js запросы в один файл.Таким образом, все ваши скрипты будут перенаправлены на вашу серверную страницу, которая решает, какой js-скрипт доставить, основываясь на имени скрипта:

htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)\.js$ server_side_script.php [NC,L]
0 голосов
/ 05 декабря 2011

Единственный способ, которым я хотел бы знать, - это настроить собственный обработчик 404. Самый простой способ создать его - использовать файл .htaccess. Добавить что-то вроде:

ErrorDocument 404 /url.php

Тогда в url.php вы «найдете» файл .js и выведете его содержимое. Убедитесь, что для заголовка HTTP установлено значение 200:

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

Выше предполагается, что при загрузке страницы файл .js не будет изначально найден (при этом будет запущен обработчик 404).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...