2

在使用 htaccess 重写 URL 时,我非常喜欢,尽管我可以做基础。

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

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

一个示例 URL 是:

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]

我怎样才能重写这部分,以便我可以简单地访问脚本?

谢谢!

4

1 回答 1

0

尝试:

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

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

于 2013-05-27T11:49:59.343 回答