To handle Canonical URL is it best practice to do a 301 redirect or better to have the same IP Address for both www and non www domain?
For example:
Canonical UR
The mechanisms you describe (A and CNAME records vs. 301 redirects) are part of two different protocols (DNS and HTTP). A and CNAME records have nothing to do with which site your HTTP server serves for different requests.
Let's look at two different DNS configurations:
Host | Type | Data
-----------------+-------+-------------
example.com | A | 192.0.2.34
www.example.com | CNAME | example.com
nslookup example.com resolves to 192.0.2.34nslookup www.example.com resolves to 192.0.2.34Host | Type | Data
-----------------+-------+-------------
example.com | A | 192.0.2.34
www.example.com | A | 192.0.2.34
nslookup example.com resolves to 192.0.2.34nslookup www.example.com resolves to 192.0.2.34In both cases your canonical domain and your www subdomain resolve to 192.0.2.34. However, the only thing your HTTP server will recognize is that it receives requests for both example.com and www.example.com on the same IP address. But it doesn't know whether you used A or CNAME records for that.
You have to use HTTP 301 redirects to enforce the canonical example.com in HTTP requests. But that has nothing to do with your DNS configuration.