To Be Noted
This feature is not marked as a Core Feature because it is not exactly required for a website to function properly. However, it is so user friendly to have this feature that it is very much like it had been marked as part of Core already. Of course, the functionality of redirecting users is already available in the Snap Websites library and it is in use by many plugins!
We want a plugin that can be used to redirect people from one path to another.
With the Cassandra setup, a person who hits a website arrives on a page. That page may be marked as a redirection so users who arrive on it are automatically sent to another page as specified. Since a page may redirect to another which later itself redirects to another, we want to implement this with recursion and make sure that we don't end up with a loop (A -> B -> C -> A.) Whether the original page should be changed with the last page information is determined based on the return code (i.e. 301 and you replace, 302 and you don't.)
Note that a redirect could be marked as an internal redirect meaning that the page will be returned to the user without a 301 or 302, but the Canonicalized URL is the correct final destination as defined in the meta tags. This way, a search engines would know exactly what is what without penalizing us and we avoid the extra 301 or 302 return code.
Also the Redirect feature is used when websites have an SSL certificate and some pages have to be sent over SSL only. In this case the Redirect forces users who arrive to the site with HTTP to switch to the HTTPS server instead.
A module could generate a temporary Redirect when a page is causing trouble on creation. This could be because a link is broken and you decided that on such an event another error page should be shown instead. Roles that have permission to fix the problem (i.e. edit the page in case of a broken link,) are not given the 307.
See: Secure Pages feature
See: Links feature (Menus, Management, Filters, Anchors) [core]
Snap! Websites
An Open Source CMS System in C++