2

我有一个简单的 CDN,我希望它足够聪明,可以在用户请求时提供文件的特定版本,否则如果没有指定版本,则为他们提供我给他们的版本。

我要提供的文件是 jQuery 和 jQuery UI 脚本文件。我遇到的问题是我希望 /ui 位于 /jquery 文件夹中,这会导致 404,因为它被解释为 jQuery 版本。

.htaccess 中的覆盖如何工作?如果一切都失败了,我可能只是将 /ui 移动到根目录并将其重命名为 /jqueryui 或其他内容。

我当前的 .htaccess 文件是:

RewriteRule ^jquery/ui/(.*)$ scripts/jquery/jquery-ui.$1.min.js
RewriteRule ^jquery/ui$ jquery/ui/2.0

RewriteRule ^jquery/(.*)$ scripts/jquery/jquery.$1.min.js
RewriteRule ^jquery$ jquery/1.0

http://mysite.com/jquery服务 1.0

http://mysite.com/jquery/1.0服务于 1.0

http://mysite.com/jquery/ui服务于 2.0

http://mysite.com/jquery/ui/2.0为 /scripts/jquery/jquery.ui/2.0/ui.min.js 返回 404

谁能发现我哪里出错了?

(版本号已更改,以使发生的事情更加明显)

4

1 回答 1

1

您可以使您的正则表达式更具体地匹配版本号,然后^jquery/(.*)$将不匹配jquery/ui/2.0。您可能还希望使用L标志,以便它在当前迭代中停止重写。尝试这样的事情:

RewriteRule ^jquery/ui/([0-9]+\.[0-9]+)$ scripts/jquery/jquery-ui.$1.min.js [L]
RewriteRule ^jquery/ui$ jquery/ui/2.0 [L]

RewriteRule ^jquery/([0-9]+\.[0-9]+)$ scripts/jquery/jquery.$1.min.js [L]
RewriteRule ^jquery$ jquery/1.0 [L]
于 2013-10-01T02:44:28.283 回答