【问题标题】:RewriteRule to remove version numberRewriteRule 删除版本号
【发布时间】:2015-05-11 11:09:10
【问题描述】:

我在一个站点上实施了缓存清除解决方案,其中版本号被添加到文件名的末尾,文件扩展名之前。但是,我遇到了其中一条规则不起作用的问题。

典型请求:

/static/deploy/styles/site_78_direct.min.0.css
/static/deploy/styles/ie/site_78_direct.0.css

我需要将以上内容重定向到以下内容:

/static/deploy/styles/site_78_direct.min.css
/static/deploy/styles/ie/site_78_direct.css

我想出了以下哪一半有效:

RewriteRule ^/static/deploy/styles/ie/(.*).([0-9]+).css$ /static/deploy/styles/ie/$1.css [L]
RewriteRule ^/static/deploy/(scripts|styles)/(.*).min.([0-9]+).(js|css)$ /static/deploy/$1/$2.min.$4 [L]

上述重定向正确,但我希望它忽略以下内容:

/static/deploy/styles/ie/site_78_direct-blessed1.css

如果句号之间有一个数字,我基本上只想重定向,即 .0.css

任何帮助将不胜感激。

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect rewrite


    【解决方案1】:

    确保转义点,否则它将匹配任何字符。

    除了这一条规则外,这两种情况都适用:

    RewriteRule ^(/?static/deploy/.+?)\.\d+\.(js|css)$ $1.$2 [L,NC]
    

    【讨论】:

    • 按预期工作,谢谢。只需要删除最后的右括号。谢谢!
    • 如何使用像mycss.1.0.0.css 这样的文件名来做到这一点?我试过RewriteRule ^(/?static/deploy/.+?)\.\d+\.(js|css)$ $1.$2.$3.$4 [L,NC] 但没有运气:(
    • @newplayer65 试试RewriteRule ^(/?static/deploy/.*?)(?:.\d+)+\.(js|css)$ $1.$2 [L,NC]
    • 感谢@anubhava 的回复!我稍后会尝试一下。我一直在寻找一些关于制定重写规则的好教程,但它们都让我感到困惑。对于以前没有写过正则表达式的人,你知道有什么好的教程吗?
    • 您可以检查正则表达式。信息网站
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2019-04-12
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多