A CNAME (Canonical Name) is a type of DNS record that maps:
When a DNS resolver encounters a CNAME record:
It brings an alias functionality (synonym).
You can achieve the same alias functionality with the alias record but faster because there is only one query needed as the alias record points directly to an IP.
CNAMEs are, according to DNS standards, meant to be the only record in a host's DNS records. Therefore, no other record type can be set with the same name.
It means that you shouldn't create a CNAME for your apex domain because the apex domain is generally also set:
On the below domain data, we see:
NAME TYPE VALUE
--------------------------------------------------
bar.example.com. CNAME foo.example.com.
foo.example.com. A 192.0.2.23
When a DNS query is performed against bar.example.com, the resolver:
To redirect to a name to a server (known as a custom domain), you may use:
By using a CNAME, the server is not considered as a 1st party server by search engine 1). The script and cookies could be considered as third-party.
DNS CNAME records are specified in search/rfc_search_detail.php and clarified in Section 10 of RFC 2181.
When a name server fails to find a desired record (RR)
See full rule at Section 3.6.2