2016-11-30 7 views
0

現在Wordpressで動作しているサイトがあります。私たちはそれを置き換えるDjangoサイトを開発しています。残業の目標は、Wordpressサイトの一部をDjangoでゆっくりと置き換えることです。WordPressと同じルートURLにProxyPassサイトをインストールする

ProxyPass /newcontent/static ! 
ProxyPass /newcontent uwsgi://127.0.0.1:3031/ retry=0 
ProxyPassReverse /newcontent uwsgi://127.0.0.1:3031/newcontent/ retry=0 

これはourwebsite.com/newcontentでジャンゴ/ uWSGIアプリをマウントします:私たちは、一般的に、このようなDjangoの何かのためにこれを設定します。しかし、これはすべてのDjango URLがそのルートから始まることを意味します。つまり、ourwebsite.com/newcontent/aboutusのようなものです。 confに特別な指示がない限り、すべてのリクエストがWordpressに送られるApacheを設定する方法はありますか?私は数多くのuWSGIエントリを作ることがそれを行う一つの方法だと想像することができますが、Djangoは内部でうまく動作しないあらゆる種類の基本パスを見ています。さらに

# Normal Wordpress config, DirectoryIndex, etc 

# Django Specific Stuff 
/about-us    # Goes to Django 
/admin/*     # Django admin 
/our-products/*   # This and all subpaths to Django 
/static/*    # Same, all static content 

また、任意のDjangoがhttpsにURLを務めリダイレクトすることが好ましいので、私たちは、常にDjangoのサイトでHTTPSを果たす:私のような何かを行うことができれば、最終的には

、それが最善だろうApache内で

最後に、Djangoが提供されるまで、徐々にwordpressのURLを置き換えます。この時点で、すべてのURLをDjangoに送るように設定をクリーンアップすることができます。

答えて

0

解決策の1つは、ProxyPassMatchです。ここでテストされていない例である。この中

ProxyPassMatch "^/newcontent/((one|two|three|four)(/|$).*) uwsgi://127.0.0.1:3031/$1 retry=0 

、例としては、onetwothreefourはジャンゴによって提供されなければならないURLがあります。

ProxyPassMatchが実行できない場合は、確かにmod_rewriteで行うことができます。

正規表現はわかりにくいです。あなたが大丈夫であっても、あなたの周りの他の人たちはそうではありません。だから、それらを避けるのが最善です。だから、別の解決策は、可能な場合は、代わりにDjangoのURLのWordpressのURLを一覧表示することです:

fivesixはWordPressによって提供される
ProxyPass /newcontent/five ! 
ProxyPass /newcontent/six ! 
ProxyPass /newcontent uwsgi://... 


更新:私は私の答えの上に眠っていたと私は思います。私は、多くのuWSGIエントリを作成すると、それを行うための一つの方法であろうと想像できるが、その後、Djangoは内部的にとてもうまく動作しないベースパス、あらゆる種類のを見ている

を言います。

したがって、次のような問題はありますか?

ProxyPass /newcontent/one uwsgi://127.0.0.1:3031/one 
ProxyPass /newcontent/two uwsgi://127.0.0.1:3031/two 
関連する問題