0

我想像这样从我的 Amazon S3 存储桶代理:

这个网址:

http://www.mysite.com/page1

来自此网址的代理:

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

这适用于此规则

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

但是,当 url 包含查询字符串时,就会出现复杂情况。

这个网址:

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

应该代理这个网址:

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

要使用 S3,需要像这样编码,以便查询字符串是键的一部分:

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

请注意,只有?and=应该被编码。%在值的键中应该单独保留。

你怎么能用 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,您应该查看NE标志而不是B标志。

希望对你有所帮助。

于 2013-11-04T08:43:35.313 回答