2012-01-16 3 views
1

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

Я хочу это: http://domain.com/folder/file.123.ext (должен работать и без 123)

быть переписана /folder/file.min.ext (если она существует)

или /folder/file.ext (если мини-версия не существует)

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

настоящее время у меня это:

RewriteRule ^(css|js)/([a-zA-Z_-]+)\.([0-9]+)\.(css|js)$ /$1/$2.min.$4 
RewriteRule ^(css|js)/([a-zA-Z_-]+)\.(css|js)$ /$1/$2.min.$3 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(css|js)/([a-zA-Z_-]+)\.min\.(css|js)$ /$1/$2.$3 

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

ответ

0

Разве вы не можете просто заменить ? в 2 правила с этим

RewriteRule ^(css|js)/([a-zA-Z_-]+)(\.[0-9]+)?\.(css|js)$ /$1/$2.min.$4 
0

Исходя из ответа Джона, это должно решить проблему цикла редирект:

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(css|js)/([a-zA-Z_-]+)(\.[0-9]+)?\.(css|js)$ /$1/$2.min.$4 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(css|js)/([a-zA-Z_-]+)\.min\.(css|js)$ /$1/$2.$3 

Первая строка предотвратит выполнение приложенного правила при перенаправлении.

Если вы обнаружите какие-либо другие проблемы или вам нужно настроить его, попробуйте использовать RewriteLog и RewriteLogLevel (на уровне 5), чтобы отладить набор правил и узнать, что делает mod_rewrite.

Смежные вопросы