.htaccess如果文件存在重写规则

时间:2012-01-16 19:51:51

标签: apache .htaccess mod-rewrite url-rewriting apache2

我发现了几个类似的问题,但似乎我需要你的帮助,因为我无法自己编写。

我想要这个: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 :(得分:0)

你不能用这个替换2条规则吗?

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

答案 1 :(得分:0)

继Jon的回答之后,这应解决重定向循环问题:

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正在做什么。