REQUEST_URI重写包含。查询字符串

时间:2017-07-09 20:33:38

标签: apache mod-rewrite url-rewriting query-string request-uri

我有一个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重写之上。

0 个答案:

没有答案