URL重写规则基于一定的条件

我正在处理在我的.htaccess文件中基于一定的条件应用URL重写规则,但由于我使用Apache .htacces进行的URL重写的知识水平接近零,所以已经触发了。这里是我的用例

我在我的WordPress应用程序中有几个插件,以及那些使用某些CSS和JavaScript的插件,我希望这些URL应该从CDN服务器提供,由于一些问题,我不能使用一个简单的重写,将重写URL整个应用程序正在破坏我的应用程序function。

http://www.mydomain.com/wp-content/plugins/pluginA/abc.css http://www.mydomain.com/wp-content/plugins/pluginA/abc.js 

我想,当CSS和JS是从这个插件(插件A)或任何其他插件的URL我想要重写,URL应该被重写为

 http://www.cdn.mydomain.com/wp-content/plugins/pluginA/abc.css http://www.cdn.mydomain.com/wp-content/plugins/pluginA/abc.js 

我不知道如何做这种基于条件的URL重写,任何build议将真的有帮助

编辑这是我目前的根.htaccess文件

 <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase /wordpress/ RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L] </IfModule> 

我已经创build了一个新的.htaccess文件在wp-content文件夹根据Michaelbuild议与以下条目

 RewriteEngine On <IfModule mod_rewrite.c> RewriteBase /wordpress/ RewriteCond %{REQUEST_FILENAME} ^.+\.(css|js)$ RewriteRule wp-content/plugins/(nivo-slider-light|Usernoise|lightbox-plus|wp-content-slideshow|content-slide)/(.+)$ http:/cdn.cloudfront.net/wp-content/plugins/$1/$2 [L,R=302,QSA] </IfModule> 

但似乎这不工作仍然为上述插件所有的CSS和JS文件正在从本地主机的URL而不是从我的CDN服务器。我甚至从我的根.htaccess文件中注释掉这些行

  RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) 

但是这也没有对URL做任何改变

这可以放在根目录下的.htaccess中。 任何你想重写的插件都可以放在()里面用|分隔 。

 RewriteEngine On # Rewrite pluginA plugin X, and pluginZ to the CDN. Add add more with | RewriteRule wp-content/plugins/(pluginA|pluginX|pluginZ)/(.+)$ http:/www.cdn.mydomain.com/wp-content/plugins/$1/$2 [L,R=301,QSA] 

注意:上面的内容重写了所有的插件文件。 如果它只应该是css&js文件,请使用

 RewriteCond %{REQUEST_FILENAME} \.(css|js)$ RewriteRule wp-content/plugins/(pluginA|pluginX|pluginZ)/(.+)$ http:/www.cdn.mydomain.com/wp-content/plugins/$1/$2 [L,R=301,QSA]