Вопрос по .htaccess, php, javascript – Разобрать js / css как файл PHP с помощью htaccess

6

Привет, я так старался сделать следующее на htaccess, но это не похоже на работу.

кто-нибудь может мне помочь?

AddType application/x-httpd-php .js

Я попробовал версию php4, php5 все, что я мог найти в Google, но мне не повезло.

что я пропустил?

в моем файле .js

следующие ...

<?php 

$(document).ready();//jquery/javascript
?>

Я ожидаю php фатальную ошибку, но я вижу именно то, что выше, в виде простого текста.

Ваш Ответ

6   ответов
1

Если вы пытаетесь заставить PHP работать в файлах Javascript, вы можете просто переименовать Javascript вjavascript_file.js.php и PHP работает внутри этого.

У вас не будет проблем, включая это на вашей странице.

`

Можете ли вы по-прежнему использовать<script src="..."></script>? Или вам нужно использовать php для включения?
Тем не менее, я знаю, что лучше всего на моем notpad ++ мне бы хотелось, чтобы маркеры были включены, а не черно-белые :) Val
9

Если вы хотите сделать это, используя только конфигурацию .htaccess (кто хочет установить заголовки вevery Файл PHP?):

<FilesMatch "\.css$">
  SetHandler application/x-httpd-php
  Header set Content-type "text/css"
</FilesMatch>

<FilesMatch "\.js$">
  SetHandler application/x-httpd-php
  Header set Content-type "application/javascript"
</FilesMatch>
Если вы получаете 500 внутренних ошибок сервера со строкой заголовка, убедитесь, что у вас включен mod_headers в вашей конфигурации apache. Спасибо Ли!
0

Одна возможность состоит в том, что вы не настроены на использование файла .htaccess.

Вы можете проверить это в своем httpd.conf.

Вы хотите, чтобыAllowOverride установлен вAll

например

от

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all
  Satisfy all
</Directory>

в

<Directory />
  Options FollowSymLinks
  AllowOverride All
  Order deny,allow
  Deny from all
  Satisfy all
</Directory>
.htaccess работает, как я тестировал сRewriteRule . /index.php [L] и некоторые другие биты там (которые я пытался удалить их все, ноAddHandler application/x-httpd-php .js Val
0

Я не знаю много о .htaccess, но я верю, что частично решение вашей проблемы - переместить jQuery за пределы тегов php следующим образом:

<?php

?>
</script>
    $(document).ready();
<script>

ваш файл будет проанализирован как любой другой php-файл, поэтому ваш javascript будет работать как обычно внутри тегов javascript.

если вы хотите включить переменные php в ваш javascript, просто сделайте так:

<?php
    $time=time();
?>

    <script>
        $( document ).ready(function(){
            $("SPAN").text("<? echo $time; ?>");
        });
    </script>
    <SPAN></SPAN>

приведенный выше код вернет текущую метку времени эпохи внутри элемента SPAN

2

Если я прав, ваш PHP-файл JS должен быть снабжен заголовком типа содержимого: application / x-javascript, иначе он не будет интерпретироваться как JS.

Заголовок (& quot; тип содержимого: application / x-javascript & quot;);

<?php header("content-type: application/x-javascript"); Это мой вывод сейчас ... Он должен быть обработан как тип файла php, а затем есть возможность добавить тип содержимого нет? Val
Я не думаю, что многие браузеры заботятся о типе содержимого файлов JavaScript, но некоторые предполагают, что если CSS-файл имеет вид text / html, то это, вероятно, фантастический 404 и ничего не будет обработано.
9

Пытаться:

<FilesMatch "\.(js)$">
AddHandler application/x-httpd-php .js
</FilesMatch>
Я пробовал это, это не работает :( Val
Вы должны сделать это, чтобы получить PHP. Для обработки ваших файлов .js вам не нужно использовать AddHandler внутри & lt; FilesMatch & gt; директива, но вы бы, если бы вы использовали SetHandler. Но когда вы используете этот обработчик, MIME-тип ответа по умолчанию будет иметь значение text / html, и я не думаю, что это можно переопределить в .htaccess, что означает, что вам придется (заново) устанавливать MIME-тип в PHP согласно ответу @ Steve.

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