ルールを書き直すことに関しては、私は少し環境に優しく、助けを求めています。私は物事を行う必要があります:
- apache を使用してリバース プロキシにする
- パラメータ ハッキングの場合に備えて、URL からいくつかのパラメータを取り除きます。
次のようなURLがあります。
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
アップデート
私はそれを次のように動作させました:
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]
最初の条件により、ルールを同じリソースに書き換えるという無限の再帰から抜け出すことができます (プロキシできるようにするため)。
それが役に立てば幸い。