2012-04-02 28 views
3

我正在開發一個web應用程序和靜態文件我簡單地使用apache在localhost而後端在一個couchdb實例運行在localhost:5984使用代理而不是使用htaccess重定向rewriteRule

webapp始終與來自後端的文件進行交互。因此,當試圖測試Apache所有文件請求到localhost:5984時,發生了什麼情況會因爲跨域策略而被阻止,因此實現這一目標的唯一方法是通過設置標誌來忽略該問題來啓動瀏覽器。

但是當我嘗試在移動設備上測試應用時,例如ipad或iphone,我又陷入了困境。

目前我有這個在我的.htaccess文件。

RewriteEngine on 

# these are 302 http redirections instead of serving as a proxy 
RewriteRule auth http://localhost:5984/auth [L] 
RewriteRule db/([\s\S]+) http://localhost:5984/db/$1 [L] 
RewriteRule send/([\s\S]+) http://localhost:5984/send/$1 [L] 

# these are just redirections to static files and work great 
RewriteRule ^([a-z/.]+) _attachments/$1 [L] 
RewriteRule ^$ _attachments/ [L] 

正如你所看到我真的不知道如何處理Apache配置不幸。 但現在發生的事情是,對於這些規則中的一些,apache只是簡單地重定向頁面,而不是將其作爲代理服務器提供,從而導致跨域問題。

同樣在第一個auth規則中,我發送POST和DELETE請求,它們作爲重定向而不是代理,它不會傳遞正在發送的數據。

所以我想實現的是激活某種功能(如果它存在),這將使apache簡單地呈現頁面,因爲它位於localhost域而不是重定向它。 (我將它命名爲代理,但也許這不是正確的術語,對命名錯誤感到抱歉)。

是否可以實現這樣的動作? 在此先感謝

+0

** 1)**看'[P]'flag:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p AND http://httpd.apache.org/docs/current/rewrite/proxy.html; ** 2)** mod_proxy(也許 - #1應該足夠,如果它在同一臺服務器上) - http://httpd.apache.org/docs/current/mod/mod_proxy.html – LazyOne 2012-04-02 11:59:09

+0

LazyOne,非常感謝,[P]國旗的工作,事實上我曾嘗試過,但我認爲它沒有工作,因爲我沒有得到我想要的屏幕上。事實證明,這些請求確實是通過傳輸到couchdb,問題是在那裏處理請求。但是,由於您的鏈接,我絕對可以更好地理解要做什麼。非常感謝。如果您不介意將您的評論標記爲答案,我會高興地將其標記爲正確。再次感謝 – zanona 2012-04-02 16:01:35

回答