Any CMS should have a way to rename parts of a URL structure so that A. the resource becomes available at a new location and is no longer available at the old location, and B. the old location automatically does a permanent redirect to the new location. This way the end-user can feel free to rename things at will (and there's no pressure to come up with the perfect name the first time).
Of course, renaming has a couple of issues that you have to watch out for. If you change the location of a resource from A to B, and then from B to C, A should forward to C without forwarding to B first. Furthermore, if you rename A to B, B to C, and C to A again, A should work, and B and C should forward to A. Finally, if the resource is deleted, all pointers should be removed. Update: Oh yeah, and if another resource is created with the original name, then you have to make sure to remove whatever rename information exists so that the new resource can be available.
However, in case of deletion, it may make sense to keep track of deleted entries so it's possible to respond with an HTTP GONE (410) response code. In that case, it is more appropriate for both A and B to directly return 410 rather than A send a "moved permanently" response and forward to B and have B return 410.
Feel free to post a comment below. Please see my comment policy.
Formatting Rules (No HTML):