Apache: Как я могу служить JavaScript через PHP?

Существуют основанные на системе политики в отношении того сервера, которые препятствуют тому, чтобы Вы изменили настройки Automatic Update. Я проверил бы локальную политику сначала, затем проверить групповую политику.

Эта база знаний Microsoft должна помочь: http://support.microsoft.com/kb/328010

3
задан 24 April 2013 в 13:28
3 ответа

Что-то сродни этому, вероятно, что Вы после:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(dir/.*\.js)$ my_script_server.php?src=$1 [L,QSA]
</IfModule>

Строки тот конец -f и -d удостоверьтесь, что файл уже не там, и заключительное правило ищет запросы то соответствие .js файлы в папке dir/ и прозрачно отправляет их в Ваш сценарий PHP.

Я изменил тот код из htaccess файла, у меня была ложь вокруг, но это было бы подобно, если бы необходимо было поместить его в httpd файл конфигурации, я верю.

Существует путь больше информации в документах Apache о mod_rewrite модуль.

2
ответ дан 3 December 2019 в 06:22

Вы могли просто вручить сценарий из php файла - это хорошо работает от ASP, так должен быть одинаково хорошо для PHP.

Я обычно сохраняю ".js" в имени файла, таким образом, я знаю то, что что сразу, такие как "some_dynamic_script.js.asp" или в Вашем случае "some_dynamic_script.js.php". Затем просто удостоверьтесь, что Ваш сценарий производит правильно форматированный ответ JavaScript, и включайте его обычным способом с soemthing как <script type="text/javascript" src="some_dynamic_script.js.php"> - можно даже передать опции querystring для кода php для реакции на при желании, как <script type="text/javascript" src="some_dynamic_script.js.php?option1=value1&option2=value2&option3=value3">.

Если Вы, вероятно, распределите свой код другим или установите его в системах, Вы не управляете, это имеет преимущество перед mod_rewrite в этом, у Вас нет дополнительного действия по установке (добавляющий переписать средства управления к апачской конфигурации или .htaccess, который не мог бы работать, если хост не имеет mod_rewrite включенным).

Я вспоминаю, что были проблемы с некоторыми более старыми браузерами, не любя javascipt подаваемый без правильного типа пантомимы, поэтому удостоверьтесь, что Вы устанавливаете это с header("Content-Type: text/javascript"); на всякий случай (иначе ответ, вероятно, будет сервером как текстом/HTML по умолчанию) - хотя я только что заметил, что часть моего кода не делает этого, и он хорошо работает в IE6/7/8, FF2/3/3.5/3.6 и по крайней мере одной версии Chrome.

Одна главная проблема для знания, используете ли Вы mod_rewrite или php более непосредственно, конечно, что, если код php делает что-либо с входом от строки запроса или базы данных приложения, необходимо удостовериться, как весь код, в котором было сказано, что данные правильно экранируются для предотвращения потенциальной инжекции и нападений на XSS.

Другой, более незначительный, проблема для знания является управлением кэшем. Процессор PHP примет значение по умолчанию к маркировке вывода как всегда бывший должный повторно требоваться, куда для простого файла JS Apache может возвратить "304 не измененный" ответ, если браузер указывает, что ранее выполнил тот же запрос, который, если возвращаемый сценарий не изменяется, мог бы быть тратой Вашей пропускной способности и заставить ответ казаться медленнее удаленным пользователям. Это - надуманный вопрос, если Ваше приложение всегда размещается на HTTPS (поскольку ничто не служило через HTTPS, должен кэшироваться так или иначе), но могло бы быть соображение для больших блоков сценария, разъединенного по HTTP. Если это могло бы быть проблемой для Вас существуют способы, которыми можно управлять управлением кэшем для восстановления его преимущества.

2
ответ дан 3 December 2019 в 06:22

Используйте комбинацию вещей:

  • мод-перезапись, чтобы php выглядел как файл js
  • отправьте заголовок сверху файла php, чтобы браузер подумал это действительно заголовок javascript

    ('Content-Type: application / javascript');

Действительно приятная часть - вы можете добавить динамический контент в 'файл javascript' с сервера, например, как это, передавая среду с php на javascript:

var environment = <?=getenv('APPLICATION_ENV');?>

// More JS code here ...
0
ответ дан 3 December 2019 в 06:22

Теги

Похожие вопросы