URL重写规则使用.htaccess无法按预期工作

时间:2012-04-16 13:29:25

标签: apache wordpress .htaccess mod-rewrite wordpress-plugin

继续上一个问题url-rewrite-rule-based-on-certain-conditions 我正在尝试像这样重写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

这就是我在.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} ^.+\.(css|js)$
RewriteRule ^wp-content/plugins/(nivo-slider-light|Usernoise|lightbox-plus|wp-content-slideshow|content-slide)/(.+)$ http:/abc.cloudfront.net/wp-content/plugins/$1/$2 [L,R=302,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

我已经尝试了所有可能的方法来重写URL,以便JS和CSS应该从我的CDN服务器获得服务,但似乎规则从未被apache选中。在这方面的任何帮助/指针将真的很感激

1 个答案:

答案 0 :(得分:1)

将此作为您的第一条规则(在RewriteBase行之后)

RewriteRule ^(wp-content/plugins/(nivo-slider-light|Usernoise|lightbox-plus|wp-content-slideshow|content-slide)/[^.]+\.(css|js))$ http://abc.cloudfront.net/$1 [L,R,NC]

此外,如果它不起作用,请尝试将*.js*.css文件移离wp-content/plugins/路径下的本地目录。