替换htaccess中查询字符串的一部分

时间:2012-11-15 20:46:47

标签: .htaccess query-string

在使用htaccess重写URL时我很绿,尽管我可以做基础知识。

在这种情况下,我有一系列从供应商返回到我的脚本的查询字符串。这一切都很好,但是当它包含一个带有“http”或“https”的URL时。当它检测到时,Apache会抛出403 Forbidden错误。我认为我可以制作一个RewriteRule,它可以将查询字符串的'http'部分重写为可以超越Apache规则的东西。

这最终将安装在客户端的计算机上,因此我无法更改任何服务器设置。

示例网址为:

http://mysite.com/gocardless_confirm.php?resource_uri=https%3A%2F%2Fsandbox.gocardless.com%2Fapi%2Fv1%2Fbills%2F07F56ERHRT

以下是我尝试使用的设置:

RewriteCond ${QUERY_STRING} ^(.*)$resource_uri=http^(.*)$
RewriteCond %{REQUEST_URI} ^gocardless_confirm.php
RewriteRule ^(.*)$ gocardless_confirm.php?$1resource_uri=hllp$2 [L]

如何重写此部分以便我可以直接进入脚本?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

RewriteCond %{QUERY_STRING} ^(.*)resource_uri=http(.*)$
RewriteRule ^gocardless_confirm.php$ gocardless_confirm.php?%1resource_uri=hllp%2 [L]

RewriteCond中的子模式在RewriteRule中被引用%# ^是模式匹配的孔串的开头 $与其结尾匹配。