0

I want to proxy from my Amazon S3 bucket like this:

This url:

http://www.mysite.com/page1

Proxy from this url:

http://mys3.bucket.com/www.mysite.com/page1

This is working with this rule

RewriteRule .* http://mys3.bucket.com/%{HTTP_HOST} [P]

However, the complication occurs when the url contains a query string.

This url:

http://www.mysite.com/page1?search=asdf

Should proxy this url:

http://mys3.bucket.com/www.mysite.com/page1?search=asdf

To work with S3, that needs to be encoded like this so that the query string is part of the key:

http://mys3.bucket.com/www.mysite.com/page1%3Fsearch%3Dasdf

Note that only the ? and = should be encoded. % in the keys for values should be left alone.

How can you do this with Apache?

4

1 に答える 1

1

これは機能する可能性があり、Bフラグでクエリ文字列をエンコードする必要があると思います。

RewriteRule (.*) http://mys3.bucket.com/%{HTTP_HOST}/$1 [QSA,B,P]

Pフラグを確認できませんでしたが、私のテストではLの代わりに動作しPます。

を使用した URL エンコーディングに関する詳細情報は次のmod_rewriteとおり
です。mod_rewrite と Apache を使用して特殊文字をエンコードする方法は?

URL を自分でエンコードする場合は、フラグではなくNEBフラグを調べる必要があります。

それがあなたの前進に役立つことを願っています。

于 2013-11-04T08:43:35.313 に答える