Перенаправить script.js в script.php - PullRequest
3 голосов
/ 23 июля 2010

У меня есть некоторый JavaScript, который генерируется PHP.В настоящее время я включаю javeascript в html, используя

<script type="text/javascript" src="js/script.php">

Но я хочу использовать

<script type="text/javascript" src="js/script.js">

Теперь script.js не существует, но я хочу, чтобы он был перенаправлен в скрипт.php без ведома пользователя.

Можно ли это сделать с помощью .htaccess?

Ответы [ 3 ]

7 голосов
/ 23 июля 2010

Если ваш веб-сервер поддерживает mod_rewrite, вы можете сделать что-то вроде этого:

RewriteEngine On

RewriteRule ^js/script\.js$ js/script.php

Если у вас несколько сценариев, вы можете обобщить это RewriteRule, используя обратную ссылку из тестового шаблона:

RewriteRule ^js/(.*)\.js$ js/$1.php
0 голосов
/ 10 апреля 2015

В родительском каталоге у вас может быть .htaccess, который отображает все файлы ресурсов в соответствующий файл php.

RewriteEngine on
RewriteRule ^js/(.*)\.js$ js/$1.js.php     
RewriteRule ^css/(.*)\.css$ css/$1.css.php

обратите внимание, я сохранил расширение файла для лучшей читаемости.

Файлы

htdocs
    mysite
        assets
            .htaccess
            js->
                script.js.php ( http://locahost/mysite/assets/js/script.js )
            css->
                style.css.php ( http://locahost/mysite/assets/css/style.js )

Заголовки

По умолчанию файлы будут выводиться как php, вам придется изменить заголовок типа содержимого на правильный тип (js, css, txt, xml и т. Д.).

Возможно, вы также захотите отключить кэширование файлов, поскольку они наиболее часто меняются.

Вы можете сделать это во всех файлах php или в файле .htaccess.

PHP

тип содержимого

js/*.js.php -> header("Content-type: text/javascript");
css/*.css.php ->header("Content-type: text/css");

кэш

*.php -> header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
*.php -> header('Pragma: no-cache'); // HTTP 1.0.
*.php -> header('Expires: 0'); // Proxies.

.htaccess

тип содержимого

<FilesMatch \.js.php$>
  Header set Cache-Control "no-transform"
  Header set Content-Type "application/javascript; charset=utf-8"
</FilesMatch>
<FilesMatch \.css.php$>
  Header set Cache-Control "no-transform"
  Header set Content-Type "text/css; charset=utf-8"
</FilesMatch>

кеш

<IfModule mod_headers.c>
  Header set Cache-Control "no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires 0
</IfModule>
0 голосов
/ 23 июля 2010

Если вы просто хотите, чтобы ваш скрипт src заканчивался на ".js", вы всегда можете оставить его в виде файла .php и связать его следующим образом:

<script type="text/javascript" src="js/script.php?name=script.js">

Этот метод обычно используется с phpили другие сценарии, которые генерируют изображения:

<img src="images/thumbnailer.php?x=foo.jpg">

Таким образом, если браузер попытается определить тип файла по «расширению», он будет «обманут» в правильном формате.

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