我正在寻找一个能够处理诸如
之类的请求的重写规则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 ,其他一切都被忽略了
感谢任何帮助。
答案 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]