web-dev-qa-db-ja.com

DNSレコードはwwwを非wwwにリダイレクトします

私は Namecheap ドメインと Vultr ホスティングを使用しています。

DNS wwwを非wwwにリダイレクトしようとしています。

www.example.comからexample.com


私はVultrに連絡し、DNSマネージャーを使用してこれを行う方法を尋ねました。彼らは自己管理されているため、彼らは役に立たないと述べました。そこで、私はNamecheapに連絡しました。彼らは、彼らがVultrのDNSマネージャーにアクセスできないので助けにはならない、私が示したレコードが正しいかどうかを教えてくれないので、Vultrに連絡する必要があると述べました。だから私は無限のサポートループにいます。


Vultr DNS Manager

Www以外にリダイレクトするようにCNAMEを設定する方法について この答え に従いました。

Type   | Name | Data         | Seconds
--------------------------------------
A      |      | ipv4 address | 300
AAAA   |      | ipv6 address | 300
CNAME  | .    | example.com  | 300
CNAME  | www  | example.com  | 300

それが伝播するのを一晩待った後、wwwはまだアクセスでき、リダイレクトしません。

別のAレコードを作成できません。CNAMEのみです。それは言う:

Unable to add record: A CNAME record is not allowed to coexist with any other data. 

[〜#〜] nginx [〜#〜]

私は このガイド に従い、sites-available configを使用してリダイレクトを試みました。 HttpとHttpsは機能しますが、wwwは非wwwにリダイレクトしません。

server {
    # Redirect http to https
    listen 80;
    return 301 https://$Host$request_uri;
}

server {
    # Redirect www to non-www
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 443 ssl default_server;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cert_chain.crt;
    ssl_certificate_key /etc/nginx/ssl/example_com.key;
    ssl_protocols  TLSv1.1 TLSv1.2;

    server_name example.com;
    ...
11
Matt McManis

DNSはwwwサイトを非wwwにリダイレクトできません。 DNSの唯一の目的は、AAAAA、またはCNAMEレコードを使用して、wwwと非wwwの両方をサーバーのIPアドレスにポイントすることです(ほとんど違いはありません)。 nginx構成は、wwwから非wwwへのリダイレクトを実行する責任があります。

2番目のサーバーブロックはwwwからwww以外にリダイレクトすることを目的としていますが、現在は(ポート80で)http接続のみを処理します。

デフォルトのサーバーを移動し、それを使用してすべてを目的のドメイン名にリダイレクトできます。例えば:

ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ...
}

Wwwとwww以外のドメイン名の両方に共通の証明書があると仮定すると、ssl_ディレクティブを外部ブロックに挿入し、それらを両方のサーバーブロックに継承できるようにします(上記を参照)。

詳細は このドキュメント を参照してください。

12
Richard Smith

redirect.center を使用して、方程式からNGINXを削除できます。

設定が簡単でシンプルです。DNSレコードを次のように設定します。

CNAME  | www  | example.com.opts-uri.redirect.center

それだけ。

2
Udlei Nati

Nginx構成ファイルにnewサーバーブロックを追加することで、wwwを非wwwに誘導できます。

ステップ1:nginx設定ファイルに次のサーバーブロックを追加します。

server {
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

ステップ2:nginxを再起動します。

Sudo systemctl restart nginx
1
ffmaer