2

私のdjangoサイトがビューオブジェクトで「HttpResponseRedirect」を呼び出して別のURLにリダイレクトするたびに、サブドメインが取り除かれ、メインサイトに戻ります。私は Django の SVN ブランチで作業しています。次に例を示します。

#リクエストは https://sub1.mydomain.com として入ります
デフビュー (リクエスト):
  return HttpResponseRedirect("/test_url") #ブラウザは実際に https://mydomain.com/test_url にリダイレクトされます


これが行われる理由はありますか?サブドメインを含むフルパスにリダイレクトする必要がありますか?

4

2 に答える 2

4

Django には、応答に常に適用されるメソッドがいくつかあります。これらの 1 つですdjango.http.utils.fix_location_header。これにより、リダイレクト応答に常に絶対 URI が含まれることが保証されます (HTTP 仕様で要求されるとおり)。

このメソッドは を使用しrequest.build_absolute_uri、これは を使用しますrequest.get_host。fromget_hostを取得しようとし、 using にフォールバックします。HTTP_HOSTrequest.METASERVER_NAME

私の推測では、サーバーが を提供しておらず、が に設定されているHTTP_HOSTと思われます。SERVER_NAMEmydomain.com

探しているものがわかったので、いくつかのテストを実行して、何が問題なのかを確認できます。

于 2009-09-22T05:17:13.463 に答える
2

HttpResponseRedirect は、Location ヘッダーが設定された 302 ステータス コードを返すだけです。URL リゾルバーはサブドメインを考慮しません ( http://code.djangoproject.com/ticket/8896を参照)。最初から再構築する (META の HTTP_HOST) か、http://thingsilearned.com/2009/01/05/using-subdomains-in-django/のミドルウェアを使用するのが最善の策です。

乾杯

于 2009-09-22T05:19:01.620 に答える