.htaccess, если файл существует, переписать правило - PullRequest
1 голос
/ 16 января 2012

Я нашел пару похожих вопросов, но, похоже, мне нужна ваша помощь, потому что я не могу написать ее самостоятельно.

Я хочу это: 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

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

Ответы [ 2 ]

0 голосов
/ 17 января 2012

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

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.

0 голосов
/ 17 января 2012

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

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