具有多个句点的javascript文件的htaccess重写规则

时间:2011-09-10 03:42:23

标签: jquery regex

我正在寻找一个能够处理诸如

之类的请求的重写规则
js/mysite/jquery.somelibrary.js or
js/mysite/jquery.validate.js or
js/mysite/somejsfile.js

到目前为止我所写的内容处理了最后一个案例     RewriteRule ^js/([a-z_]+)/([^\/.]+)\.js$ /site_specific_js.php?site=$1&file=$2 [QSA,L]

但是在前两个,所有被重写的文件 是 jquery ,其他一切都被忽略了

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

所有内容都在点([^\/.]+)上,只需将其删除

即可
RewriteRule ^js/([a-z_]+)/([^\/]+)\.js$ /site_specific_js.php?site=$1&file=$2 [QSA,L]

或在$ 1

RewriteRule ^js/([a-z_]+)/([a-z0-9\.]+)\.js$ /site_specific_js.php?site=$1&file=$2 [NC,QSA,L]

答案 1 :(得分:0)

在:

RewriteRule ^js/([a-z_]+)/([^\/.]+)\.js$ /site_specific_js.php?site=$1&file=$2 [QSA,L]

让我们看看文件名,这是重要的部分:

([^\/.]+)\.js

不需要转义正斜杠,因为我们在正则表达式中没有使用分隔符。实际上,你在其他地方使用/未转义。

([^/.]+)\.js

让我们分解一下:

(
  [^    # anything that's not:
    /   # a forward slash, or
    .   # a period
  ]  
  +     # one or more times
)  
\.      # then a period
js      # then "js"

显然,我们可以从字符类中删除.

(
  [^    # anything that's not:
    /   # a forward slash
  ]  
  +     # one or more times
)
\.      # then a period
js      # then "js"

结束时:

RewriteRule ^js/([a-z_]+)/([^/]+)\.js$ /site_specific_js.php?site=$1&file=$2 [QSA,L]