.htaccess 重写JS缓存破坏规则

.htaccess 重写JS缓存破坏规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我在JavaScript/CSS上使用了破坏缓存的查询字符串,只是想知道如何重写它,使其成为文件名的一部分 我想将:website.com/js/m/file.min.js?params改为website.com/js/m/file.min.params.js <IfModule mod_rewrite.c> # Domain Redirects RewriteEngine On RewriteBase / RewriteRu

我在JavaScript/CSS上使用了破坏缓存的查询字符串,只是想知道如何重写它,使其成为文件名的一部分

我想将:website.com/js/m/file.min.js?params改为website.com/js/m/file.min.params.js

  <IfModule mod_rewrite.c>

      # Domain Redirects

      RewriteEngine On
      RewriteBase /

      RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L]

      RewriteCond %{REQUEST_FILENAME} -s [OR]
      RewriteCond %{REQUEST_FILENAME} -l [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^.*$ - [NC,L]

      #If we're here, redirect through zend:
      RewriteRule ^.*$ index.php [NC,L]
    </IfModule>

#域重定向
重新启动发动机
重写基/
重写规则^/js/m/([a-zA-Z.]+).min.[0-9]+.js$/js/m/$1.min.js[L]
RewriteCond%{REQUEST_FILENAME}-s[或]
RewriteCond%{REQUEST_FILENAME}-l[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^.*$-[NC,L]
#如果我们在这里,通过zend重定向:
重写规则^.*$index.php[NC,L]

首先,您的此规则不正确且不起作用:

RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L]
原因:重写规则匹配的URI没有前导斜杠

现在,您的任务是:

我想重写:website.com/js/m/file.min.js?params to 改为website.com/js/m/file.min.params.js

  <IfModule mod_rewrite.c>

      # Domain Redirects

      RewriteEngine On
      RewriteBase /

      RewriteRule ^/js/m/([a-zA-Z.]+).min.[0-9]+.js$ /js/m/$1.min.js [L]

      RewriteCond %{REQUEST_FILENAME} -s [OR]
      RewriteCond %{REQUEST_FILENAME} -l [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^.*$ - [NC,L]

      #If we're here, redirect through zend:
      RewriteRule ^.*$ index.php [NC,L]
    </IfModule>
可以通过此规则处理:

# redirect from /js/m/file.min.js?params to /js/m/file.min.params.js
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(js/m/.+?)\.js\?([^\s&]+) [NC]
RewriteRule ^ /%1.%2.js? [R=301,L]

# forward from /js/m/file.min.params.js to /js/m/file.min.js?params
RewriteRule ^(js/m/.+?\.min)\.([^.]+)\.js$ $1.js?$2 [L,QSA,NC]

谢谢你的回复!我在
RewriteBase/
之后添加了这段代码,它重定向到
js/m/scripts.async.min.1363759402.js
,但它仍然是通过index.php重定向的最后一条重写规则,好像它在
RewriteRule^(js/m/[^.]+\.min)\.([^.]+\.js$$1.js?$2[L,QSA,NC]
上不匹配??也就是说,我希望
js/m/scripts.async.min.1363759402.js
加载
js/m/scripts.async.min.js?1363759402
的内容,但不是吗?