web-dev-qa-db-ja.com

nginxはサブドメインを忘れずに別のドメインにリダイレクトします

これはかなり簡単な方法です。別のドメインにリダイレクトしてもサブドメインを転送するにはどうすればよいですか?例: http://foo.domainone.com/bar.php -> http://foo.domaintwo.com/bar.php

前もって感謝します!

3
Oliver

次の行に沿った何かがあなたのために働くはずです(これはtest.comをabc.comにリダイレクトします):

server {
# Listen on ipv4 and ipv6 for requests
listen 80;
listen [::]:80;

# Listen for requests on all subdomains and the naked domain
server_name test.com *.test.com;

# Check if this is a subdomain request rather than on the naked domain
if ($http_Host ~ (.*)\.test\.com) {
    # Yank the subdomain from the regex match above
    set $subdomain $1;

    # Handle the subdomain redirect
    rewrite ^ http://$subdomain.abc.com$request_uri permanent;
    break;
}
# Handle the naked domain redirect
rewrite ^ http://abc.com$request_uri permanent;
}

これにより、ネイキッドドメインとサブ(またはサブ、サブ)ドメインが新しい「ベース」ドメインにリダイレクトされるようになります。実際のこれのいくつかの例:

phoenix:~ damian$ curl -I -H "Host: test.com" web1-france
HTTP/1.1 301 Moved Permanently
Server: nginx/1.1.1
Date: Sat, 08 Oct 2011 06:43:45 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://abc.com/

phoenix:~ damian$ curl -I -H "Host: subdomain1.test.com" web1-france
HTTP/1.1 301 Moved Permanently
Server: nginx/1.1.1
Date: Sat, 08 Oct 2011 06:43:50 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://subdomain1.abc.com/

phoenix:~ damian$ curl -I -H "Host: wibble.subdomain1.test.com" web1-france
HTTP/1.1 301 Moved Permanently
Server: nginx/1.1.1
Date: Sat, 08 Oct 2011 06:43:55 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://wibble.subdomain1.abc.com/

書き換え行で、「永続的」ではなく「最後」を指定して、301永久的に移動するのではなく、302を一時的に移動することができます。ドメインを移動する場合は、後で行う必要があります:)

お役に立てれば。

7
Damian

私自身のサーバーでのテストは、あなたのサーバーに適応するのは簡単なはずです。

server {
    listen 80;
    server_name test.shishnet.org;
    root /var/www;

    if ($http_Host ~ (.*)\.shishnet\.org) {
        set $subdomain $1;
        rewrite (.*)$ http://$subdomain.example.com$1;
    }
}
1
Shish

ここでDamianを拡張しますが、重複するクエリパラメータを修正します。

server {
    # Listen for requests on all subdomains and the naked domain
    server_name _;

    # Check if this is a subdomain request rather than on the naked domain
    if ($http_Host ~ (.*)\.example\.com) {
        # Yank the subdomain from the regex match above
        set $subdomain $1;

        # Handle the subdomain redirect
        rewrite ^ http://$subdomain.example.com$request_uri? permanent;
        break;
    }

    # Handle the naked domain redirect
    rewrite ^ http://example.com$request_uri? permanent;
}

参照:

1
Wernight