Есть файл main.css, который доступен по прямой ссылке http://test4.dev.3klika.ru/main.css
В .htacccess содержатся строки:
RewriteEngine on
RewriteRule \.(css|)$ - [NC,F,L]
но файл доступен как при подключении в <head>, так и по прямой ссылке.
Мне необходимо перенаправлять все запросы .css файлов на .php файл, который будет сжимать стили и сохранять в кэш файл, поэтому вариант "удалить файл" - не подходит.
redroid, спасибо за ответ.
Проблема как раз в том, что имея запись в .htaccess:
RewriteRule ^css/(.*).css$ /t.php [L]
И при переходе по ссылке http://test4.dev.3klika.ru/css/main.css, я получаю именно .css файл, а не .php. (Файл .php есть, доступен, содержит банальный print());
По поводу сжатия на лету , я делаю так , ставлю в код реальные ссылки на реальные файлы которые физически лежат там где и указано в коде , в .htaccess я прописываю перенапрявление на скрипт PHP с параметром имения файла , скрипт проверяет последнюю дату изменения скрипт и если ничего не изменилось отдает кэш , иначе минифицирует файл ложит в кэш и отдает сжатое :
#генератор manifest
RewriteRule (cache.manifest)$ /common/tool/manifest_gen.php [L]
#минификация js-css
#RewriteRule ^common/(.*).js$ /common/tool/static.php/?filename=$1.js [L]
#RewriteRule ^common/(.*).css$ /common/tool/static.php/?filename=$1.css [L]
Таким образом даже если к скрипту обращаются напрямую всегда получают сжатую версию.
в папке с файлами которые надо запретить следует разместить файл .htaccess
<FilesMatch ~ "\.(css|html)$">
Order allow,deny
Deny from all
</FilesMatch>
а вообще пользуйтесь гуглом ответ вот отсюда
Сборка персонального компьютера от Artline: умный выбор для современных пользователей