URL根据特定条件重写规则

时间:2012-04-15 17:43:01

标签: apache wordpress .htaccess mod-rewrite url-rewriting

我正在根据我的.htaccess文件中的某些条件应用URL重写规则,但是由于我使用Apache几乎没有关于URL重写的知识而受到打击.htacces.Here是我的用例

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

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重写,任何建议都是真的 有帮助

修改 这是我在根

中的当前.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>

我已根据.htaccess建议在wp-content文件夹下创建了一个新的Michael文件,其中包含以下条目

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文件都使用来自localhost的URL而不是来自我的CDN服务器。我甚至从我的root的.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})

但这也没有对网址进行任何更改

1 个答案:

答案 0 :(得分:1)

这可以放在根目录下的.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&amp; 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]