【问题标题】:.htaccess if file exists rewrite rule.htaccess 如果文件存在重写规则
【发布时间】:2012-02-11 17:14:18
【问题描述】:

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

我想要这个: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

当我删除第二行时它工作正常......但我需要它在没有数字的情况下也能工作:(

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        相关资源
        最近更新 更多