我有一个WordPress插件和主题,它错误地调用外部css文件的URL。我稍后会修复,但在那之前,我需要进行重定向,以便正确地提供css。
REQUEST_URI包含完整路径,为什么这不起作用?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/?wp-content/plugins/jetpack/css/%22https:/fonts.googleapis.com/css?family=Open+Sans%22$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/?wp-content/plugins/jetpack/css/"https:/fonts.googleapis.com/css?family=Open+Sans"$
RewriteRule ^(.*)$ https://fonts.googleapis.com/css?family=Open+Sans [R,L]
</IfModule>
注1 :我在RewriteCond中尝试了几种转义字符组合。什么都行不通。 注2 :我正在使用标志[R,L]进行测试,以防止浏览器缓存。稍后会改为[R = 301,L]。 注3 :我已经过测试,以确认问题出在RewriteCond上,而不是RewriteRule。
更新 :
好的,所以这是一个糟糕的问题和一个愚蠢的错误。即使原始REQUEST_URI包含查询字符串,mod_rewrite也不允许查询字符串在REQUEST_URI中以进行匹配。因此,QUERY_STRING代替。我认为它可以以任何一种方式完成。我的REQUEST_URI中没有 true 查询字符串 - 我的查询字符串位于我想要匹配的字符串中 - 这就是为什么我没有&# 39;一开始就去QUERY_STRING。但是mod_rewrite仍然将?
看作典型的查询字符串start。
对不起,伙计们。我可以这样处理它,直到我解决WordPress中的潜在问题:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/?wp-content/plugins/jetpack/css/%22https:/fonts.googleapis.com/css(.*)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/?wp-content/plugins/jetpack/css/"https:/fonts.googleapis.com/css(.*)$
RewriteRule ^(.*)$ https://fonts.googleapis.com/css?family=Open+Sans [R,L]
</IfModule>
使用WordPress,请记住将重写放在WordPress重写之上。