I have managed to make a change so that the the default rotate function for "R" (free) gets locked around the Z axis when in the perspective viewport. The problem is that when I do that Blender will not rotate around the correct axis when you enter the left, right, top viewports etc. Is there any way to keep Blenders' default on all viewports except the perspective one?
Blender doesn't offer the options you want but I expect you can achieve this with an addon.
By creating your own rotation operator you can look at various properties then choose which options to set when calling the existing rotation operator. Then you replace the key-binding to run your operator instead of the standard operator.