如果未指定,则提供特定的嵌套文件或通用嵌套文件

时间:2013-10-01 02:18:02

标签: apache .htaccess

我有一个简单的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

有人能找到我出错的地方吗?

(版本号已更改,以便更明显地发生了什么)

1 个答案:

答案 0 :(得分: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]