Is it better to use 301 redirects to URLs with a trailing
/ to a URL without a trailing
/ or is it better to canonicalise one version?
"Why not both?"
But more serious, you want them both. Use 301 to correct searchengines, and use canonical to indicate preference.
The 301 is the most important one, since that also tell SE's that you dont use the trailing slash url, but the one without.
canonical link type is not supported by all user agents, and even if a user agent supports the
canonical link type, it may decide to ignore it, so users would end up on the "wrong" URL.
So a 301 redirect is preferable.
This is also the recommendation of the
Before adding the canonical link relation, verification of the following is RECOMMENDED:
For HTTP, permanent HTTP redirects (Section 10.3.2 of [RFC2616]), the traditional strong indicator that a IRI's content has been permanently moved, could not be implemented in place of the canonical link relation.