2012-11-15 46 views
2

当我用htaccess重写URL时,我很绿,尽管我可以做基础知识。在htaccess中替换查询字符串的一部分

在这种情况下,我有一系列查询字符串从供应商返回到我的一个脚本。除了当它包含一个带有'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] 

我怎么可以重写这个部分,所以我可以简单地得到的脚本?

谢谢!

+0

你想得到什么样的网址?因为你的正则表达式是无效的,我什么都不懂。 – vmeln

回答

0

尝试:在的RewriteCond

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

子模式都在重写规则中引用%#
^是模式匹配的孔串的开始。
$与其结尾相符。