在重写规则和寻求帮助方面,我有点绿 . 我有要求做的事情:
-
使用apache作为反向代理
-
在参数黑客的情况下从网址中删除一些参数 .
我有一个网址,类似于:
http://server.com/search?param1=xxxx¶m2=yyyy¶m3===zzzz
要么
http://server.com/search?param2=xxxx¶m1=yyyy¶m3===zzzz
你明白了,参数可以是任何顺序 .
我希望我的终端服务器只能获得param2 = CONST . 所以我正在剥离param2并添加我自己的 .
为了使事情进一步复杂化,这不能在 .htaccess
但是 httpd.conf
(重写规则的细微差别) .
这是我目前的(不正确匹配) .
Options +FollowSymLinks
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+&)?param2=(.*)&(.*)?$ [NC]
RewriteRule ^/search$ http://%{HTTP_HOST}/search?%1%2&%3¶m2=XXXXXX [R=301,L]
ProxyPass /search http://localhost:8080/search
ProxyPassReverse /search http://localhost:8080/search
UPDATE
我得到了以下工作:
RewriteCond %{QUERY_STRING} !site=MY_CONST
RewriteCond %{QUERY_STRING} (.*)(^site=[a-zA-Z0-9]+&?|^&site=[a-zA-Z0-9]+&|&site=[a-zA-Z0-9]+)(&?.*) [NC]
RewriteRule ^/search$ http://%{HTTP_HOST}/search?%1%3&site=MY_CONST [L,R=301,NS]
第一个条件使您摆脱了将规则重写到同一资源的无限递归(因此可以代理它) .
希望能帮助到你 .