在使用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]
如何重写此部分以便我可以直接进入脚本?
谢谢!
答案 0 :(得分:0)
尝试:
RewriteCond %{QUERY_STRING} ^(.*)resource_uri=http(.*)$
RewriteRule ^gocardless_confirm.php$ gocardless_confirm.php?%1resource_uri=hllp%2 [L]
RewriteCond中的子模式在RewriteRule中被引用%#
^
是模式匹配的孔串的开头
$
与其结尾匹配。