2013-07-11 56 views
1

我在heroku上有一個rails應用程序,而且heroku上也有一個wordpress-heroku安裝。我正在使用rack-reverse-proxy gem將我的wordpress重定向到我的Rails應用的/ blog目錄。我跟所有的指示在這裏:當wordpress作爲rails子目錄託管時,無法登錄到wp-admin

http://rywalker.com/setting-up-a-wordpress-blog-on-heroku-as-a-subdirectory-of-a-rails-app-also-hosted-on-heroku

當我訪問它的正常地址我的WordPress博客,一切工作正常。但是,當我將其設置在我的Rails應用程序的子目錄下時,我無法登錄。我轉到wp-login.php,輸入我的憑據,轉到/blog/wp-admin.php,然後立即將我重定向回到/blog/wp-login.php?redirect_to=http%3A%2F%2Flocalhost%3A3000%2Fwp-admin%2F & reauth = 1。設置的唯一Cookie是wordpress_test_cookie,但其他任何wordpress cookie都不會在我的瀏覽器中出現。

我已經嘗試了很多事情來解決這個問題,包括使用rack-reverse-proxy轉發全部 rails到wordpress的流量,所以我不必在導致問題的情況下使用a/blog子目錄。但結果完全相同。我還確定Rack :: ReverseProxy配置中的preserve_host設置似乎沒有區別,無論它是真是假。

想法?

+0

它看起來像我有同樣的問題,因爲這傢伙:http://stackoverflow.com/questions/14220489/rails-heroku-app-with-wordpress-as-subfolder爲了澄清,我看到wordpress-test-cookie被成功設置,但是當我嘗試登錄時,沒有其他cookie來自wordpress。 – megsolley

+0

您是否發現了任何內容回答? – nicolas

回答

0

A)你有什麼你的wp-config.php?應該是這樣的:

define('WP_SITEURL', 'http://www.DOMAIN.com/blog'); 
define('WP_HOME', 'http://www.DOMAIN.com/blog'); 

B)在機架::反向代理設置,你指向博客(WordPress的)herokuapp.com URL,而不是主網站(軌道)的網址,對不對?我意識到我的帖子在這一點上並不清楚。

0

我終於跟蹤到這個機架反向代理中的一個bug。 set-cookie頭以不正確的格式發送,因此只有第一個cookie被瀏覽器正確解釋。這恰好是wordpress測試cookie。所有其他(有用的)正在被扔掉,所以我當然無法登錄。

我打算提交一個bug並將分支提交到rack-reverse-proxy,但同時我使用此修補程序修復了它我config.ru:

class MyReverseProxy < Rack::ReverseProxy 
    private 
    def create_response_headers(http_response) 
    response_headers = super(http_response) 
    if response_headers 
     if response_headers["Set-Cookie"].is_a?(Array) 
     response_headers["Set-Cookie"] = response_headers["Set-Cookie"].join("\n") 
     end 
    end 
    response_headers 
    end 
end 

# this is to make /blog show my wordpress blog 
use MyReverseProxy do 
    reverse_proxy_options :preserve_host => false 
    reverse_proxy(/^\/blog(\/.*)$/, 'http://your-blog-server.com$1') 
end