1

herokuにrailsアプリがあり、herokuにもwordpress-herokuをインストールしています。Rack-reverse-proxy gem を使用して、wordpress を Rails アプリの /blog ディレクトリにリダイレクトしています。ここのすべての指示に従いました:

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 トラフィックをワードプレスに転送するなど、これを修正するために多くのことを試みたので、問題の原因となった場合に /blog サブディレクトリを使用する必要はありません。しかし、まったく同じ動作が発生します。また、Rack::ReverseProxy 構成の :preserve_host 設定が true か false かに関係なく、違いがないように見えることも確認しました。

アイデア?

4

2 に答える 2

0

最終的にこれを追跡して、rack-reverse-proxy のバグにたどり着きました。set-cookie ヘッダーが不適切な形式で送信されていたため、最初の Cookie のみがブラウザーによって正しく解釈されていました。それはたまたまワードプレスのテスト Cookie でした。他の(便利な)ものはすべて捨てられていたので、もちろんログインできませんでした。

バグとブランチを 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
于 2013-07-12T05:39:00.223 に答える
0

A) wp-config.php には何がありますか? 次のようになります。

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

B) Rack::ReverseProxy の設定で、メイン サイト (Rails) の URL ではなく、ブログ (WordPress) の herokuapp.com の URL を指していますか? 私の投稿はその点について明確ではないことに気づきました。

于 2013-07-11T20:09:15.123 に答える