2017-02-14 7 views
0

から私は、ドメインwww.example1.comでウェブサイトを持っていた、と最近、私はそうwww.example1.comwww.example2.comの両方が同じコードが、ドメイン名べきを提供しています、www.example1.comを含む同じサーバーに別のドメインのDNS www.example2.comを指摘していますだから私は、別のWebページにユーザーをリダイレクトするドメイン名に基づいて、私はrequest.META['HTTP_HOST']を使用し、毎回が出力されたGETドメイン名Djangoのリクエスト

def homepage(request): 
    domain = request.META['HTTP_HOST'] 
    if domain == 'www.example1.com': 
     return HTTPResponseReredirect('/new/') 
    elif domain == 'www.example2.com': 
     return HTTPResponseReredirect('/old/') 

以下のように異なること、そして私はDjangoのリクエストからドメイン名を取得したいですIPアドレス127.0.0.1:8001以下のように

META:{'HTTP_ACCEPT': ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8’, 

'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch, br', 
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 
'HTTP_CONNECTION': 'close', 
'HTTP_COOKIE': 'sessionid=xxxxxxxxxxxxxxxx; ', 
'HTTP_HOST': '127.0.0.1:8001', 
'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 
'PATH_INFO': u'/', 
'QUERY_STRING': '', 
'RAW_URI': '/', 
'REMOTE_ADDR': '127.0.0.1', 
'REMOTE_PORT': '41280', 
'REQUEST_METHOD': 'GET', 
'SCRIPT_NAME': u'', 
'SERVER_NAME': '127.0.0.1', 
'SERVER_PORT': '8001', 
'SERVER_PROTOCOL': 'HTTP/1.0', 
'SERVER_SOFTWARE': 'gunicorn/19.0.0', 

実際のドメイン名を取得するにはどうすればよいですか?

答えて

0

request.META ['HTTP']は、サーバー上の現在のドメイン名、またはドメイン名が結ばれていない場合のIPアドレスを示します。


は、例えば、私は私のプロジェクトでこの機能を持っているローカルサーバー

enter image description here

  • 何show`sに私のテスト機能をshow`s何

    def test(request): 
        return HttpResponse("{}".format(request.META['HTTP_HOST'])) 
    
    1. 私はドメイン名aut0を持つリモートサーバー上のテスト機能あなたの出力は127.0.0.1:8001である理由私はあなたがローカルサーバでコードをテストすると仮定 enter image description here

    をparts.site、that`s。あなたのサーバにドメイン名を設定すると、すべてがうまくいくと思います:)

  • +0

    いや、私は上記の貼り付けられた出力をサーバーからだった、サーバーに直接テストしていジャンゴHTTP要求、それは私が混乱しています何、なぜそれはあなたがリモートサーバ上のドメインを設定 –

    +0

    ドメイン名を示すされませんでしたか?あなたのプロジェクトのウェブアドレスは? –

    1

    あなたはgunicornの前でnginxを使用していますか?

    herehereによると、あなたのリクエストに「HTTP_HOST」が正しくないことを示しています.METAは、あなたのnginx設定の誤った設定を強く示唆しています。両方の記事からの関連応答

    proxy_set_header Host $http_hostproxy_set_header Host $hostserver_nameに変更しなければならないよう

    はそうでは、サーバーにアクセスするために使用されるアドレスに適切に 設定されるべきです。

    +0

    はいnginx、gunicorn、supervisordを組み合わせて使用​​しています –

    +0

    そう、http_hostが各ドメインに対して正しく渡されていることを確認するにはnginxの設定を確認してください。 – neomanic

    関連する問題