2009-02-19 6 views
3

Мне нужно применить меры минимизации ко всем файлам javascript и CSS, кроме тех, которые я указываю.Mod Rewrite: применимо ко всем файлам js и css, кроме

У меня есть это условие и правило, которое применяется ко всем файлам (CSS и JS):

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.*\.)(js|css)$ minify.php?q=$1$2 [L,NC] 

мне нужно добавить условия, чтобы сказать:

Применить ко всем, за исключением: jquery.js , prototype.js и т.д ..

ответ

8

Попробуйте

RewriteCond %{REQUEST_FILENAME} !^.*jquery.js$ 
RewriteCond %{REQUEST_FILENAME} !^.*prototype.js$ 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.*\.)(js|css)$ minify.php?q=$1$2 [L,NC] 

ключом к этому является инверсия REGE x используя "!" (восклицательный знак), чтобы сказать, что имя файла не jquery.js, а не prototype.js, и его можно найти на жестком диске.

0

Вы можете использовать RewriteCond, чтобы уточнить, на каких условиях следует применять RewriteRule. Так предварять эти строки в .htaccess:

RewriteCond %{REQUEST_FILENAME} !jquery.js 
RewriteCond %{REQUEST_FILENAME} !prototype.js 
0

Большое спасибо за это! Я искал этот ответ на свою проблему почти месяц. Моя проблема заключалась в том, как переписать некоторые файлы на https, а остальное на http, но я смог изменить выше, чтобы заставить его работать. Вот кусок моего кода. (У меня есть намного больше файлов в реальном .htaccess на сайте.)

################################################################# 
# To only change certain files from http to https, the rest from 
# https to http. Absolute links are set up throughout the site, 
# but if a visitor for some reason edits the URL in the address 
# bar, the URL will change back to the proper format. 

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^alvingolf\.com$ [NC] 
RewriteCond %{HTTPS} on 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{REQUEST_FILENAME} !^.*contact-us.html$ 
RewriteCond %{REQUEST_FILENAME} !^.*register-for-tournaments.html$ 
RewriteCond %{REQUEST_FILENAME} !^.*form.htm$