2013-11-04 69 views
0

我要代理從我的亞馬遜S3存儲是這樣的:Apache代理/重定向編碼?和=查詢字符串

這個網址:

http://www.mysite.com/page1 

代理從這個網址:

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

這正與此規則

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

但是,併發症發生w該網址包含查詢字符串。

這個網址:

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 

請注意,只有?=應該被編碼。 %中的值應該單獨留下。

你怎麼用Apache做到這一點?

回答

1

這可能會實現,而且我相信你想要的B標誌編碼的查詢字符串:

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

我無法覈實P標誌,但它在我的測試與L作品P代替。

這裏是關於URL編碼使用mod_rewrite更多的信息:
How to encode special characters using mod_rewrite & Apache?

如果你自己編碼的網址,你應該看看NE標誌,而不是B標誌。

希望它可以幫助你前進。