302's are far more commonly used than 301's.
FYI, the 'cpanel redirect' is a bit misleading in that cPanel doesn't actually do the redirecting (as many seem to think). What the cPanel redirect *tool* does is to create an entry into the .htaccess file. I feel this is important to know because although the cPanel tool tends to make this a bit of a 'no brainer', it can cause a problem if you already have *other* redirect rules in place in the .htaccess file. The Cpanel Tool simply adds rules to the end of the file, but quite often you will be wanting this rule to be one of the 1st ones in the file (as they are acted upon in the order they are written) and this is quite probably the cause of your redirect loop - the .htaccess may well have had the correct rules, but in the wrong order.
I see you have already discovered how.
Hmmm, personally I wouldn't consider this to be a 'problem' in that it is perfectly normal - in fact it is actually *too* normal in that many people will set up a perfectly good working and indexable ZenCart with zero redirects involved, and then they'll read something about 'SEO' and promptly go ahead and add a zillion rewrites and redirects to make a 'pretty URL' (via a SEO module). This is all well and good until at some future date the site gets moved/reorganised and the redirects are then actually needed (to a point), and you end up with an overly complex .htaccess file trying to keep everything where it all belongs.
Matt Cutts (Google SEO guru) actually has a fair bit to say about the 301's vs the 302's - and the bottom line (the way I understand it) is that Google basically treats them equally.
I've been arguing this case for years. The 'SEO experts' don't tend to agree though.
You know what *I* do these days if/when a page is moved? Nothing. That's what. I just "let them go" and have the server provide the oft dreaded 'page not found' error to both people and bots. It is then only a matter of time (days, perhaps a week or two) before the SE's drop the links to the original page (now gone) and will have re-indexed it again (in its new location). OK, so things may be a bit 'messy' during this period, but with no rewrites or redirects in place I avoid all possibility of setting up infinite loops and/or other similar issues where redirected URLs need to be redirected.
For those that still think I'm anti-SEO I wish to stress that this is NOT true - it is the *needless* redirects/rewrites that are often used to obtain 'pretty URL's that I object to, not the 'Friendly' URL's themselves.
Anyway, back to your question/problem, what you have done, as long as it achieves your aims, has been done correctly, it is just that in my view/experience it will more often lead to bigger headaches in the longer term than the short term headaches that you are avoiding by using the redirect in the 1st place.
As for the SE's and effects - for the contents of any given page on any given site the rankings will end up being exactly the same at the end of the day (with perhaps the site with no redirects ranking slightly higher). The *location* of the page/site isn't a ranking factor (it *used* to be many years ago) so on this basis letting a moved page 'disappear' (404 error) and then 're-appear' at a different URL comes with a short time 'cost' (no one likes 404 errors) but long term benefits (No penalties for the redirect), with the added benefit of a simpler .htaccess file, perhaps only containing the things it was originally designed for (Access control) - That's how it got its name BTW.
Bottom line - Avoid URL redirects/rewrites at all costs unless there an an absolute and genuine need for it.
Good examples would be to redirect to/from 'domainname.com' to 'www.domainname.com' (Else the SE's will consider these as two different sites - causing the rankings to be split/divided. Another good use is if you use print media (where the customers are half expected to type in the URL rather than having a link to click) - In this case, a redirect from (say)
www.domain.com/contact to the 'real' page @
www.domain.com/index.php?main_page=contact_us just makes perfectly good sense.
I can't think of any other *good* reason to use a URL redirect.
Cheers
RodG