Mod_Rewrite变量动态目录中的两个静态目录

时间:2015-05-12 17:50:17

标签: javascript php apache .htaccess mod-rewrite

因此,每当我们作为开发人员更新文件时,我都会尝试强制重新加载javascript文件。为了做到这一点,我们使用这里找到的答案https://stackoverflow.com/a/7671705/805779,我们认为这将很好,但我不知道怎么做mod重写。所以这是我的链接

www.mysite.com/js/v1/myjs.js

我需要将其更改为

www.nysite.com/js/myjs.js

这是我到目前为止所做的,但它无法正常工作

<IfModule mod_rewrite>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^/js/(.*)$/(.*)$ js/$2 [L,NC,R]
</IfModule>

经过一些测试后,我发现我的主要问题是没有将.c添加到我的IfModule中,请注意以下内容是“部分”工作

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/css/(.*)/(.*)$ /css/$2 [L,NC,R]
    RewriteRule ^/js/(.*)/(.*)$ /js/$2 [L,NC,R]
</IfModule>

这适用于我的经典示例

www.mysite.com/js/v1/myjs.js => www.nysite.com/js/myjs.js

但是,如果涉及多个变量,则不起作用。又名

www.mysite.com/js/v1/min/pages/myjs.js 

我的版本号v1将始终直接位于根文件夹之后,所以js / v1或css / v1我要删除v1并保留其后的所有内容

1 个答案:

答案 0 :(得分:0)

您可以将此单一规则用于此重定向:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/?((?:css|js))/v\d+/(.+)$ /$1/$2 [L,NC,R]
</IfModule>