私はwww.example.com/api1でapiを提供するapacheサーバで設定されたphpアプリケーションを持っていますが、同じドメインでwww.example.com/api2のような別のルートで私のdjangoアプリケーションを実行したいと思います。それは可能ですか?貴重な解決策や提案をお願いします。1つのドメインで2つのWebアプリケーションを実行するにはどうすればよいですか?それは可能ですか?
答えて
Djangoアプリケーションでは、特定の基本パス(メインのurls.py
)のすべてのURLを配信するように設定できます。
また、そのベースパスのリクエストをDjangoアプリに転送するように、Apacheサーバーを設定する必要があります。
How to serve up dynamic content via django and php on same domain?は(「サイト」の下に管理UIで後者)settings.ALLOWED_HOSTS
およびサイトを構成することを忘れないでくださいを参照してください。
https://docs.djangoproject.com/en/1.9/ref/settings/#allowed-hosts
注:
あなたは(Djangoのアプリケーションのための一般的なルールとして)urls.py
ファイルを除いて、あなたのコードのいずれかにハードコードされたURLを使用することはありませんことを確認してください。テンプレートで:常に、(reverse()
使用して)あなたのモデルにget_absolute_url()
を実装
static
(staticfiles
かを)Djangoのコードで
reverse()
、reverse_lazy()
、- を使用しています。
完全なURL(Facebookのバックリンクなど)が必要な場合は、request.build_absolute_uri()
を使用してください。
確かに可能です。私はあなたのdjangoアプリが特定のポートでリクエストを待ち受けることを想像しています。通常はポート80ですが、正しく理解していれば、すでにポート80で動作しています。
だからあなたのdjangoアプリ別のポート番号(例えば8080)のリクエストをリッスンし、www.example.com/api2へのすべてのリクエストをdjangoアプリケーションが動作しているポート番号に転送するapache(htaccess)のルートを作成します。あなたのhtaccessファイルに次の行に沿って
何か作業をする必要があります:
RewriteCond %{REQUEST_URI} /api2
RewriteRule ^(.*)$ example.com:8080/$1 [NC,L]