To answer the specific question about HTTP redirects: Use HTTPRedirect, e.g. returned from a Delayed
, APIFunction
or FormFunction
.
In general, you have pretty low-level control over everything via HTTPRequestData and HTTPResponse. Various features such as the ExportForm
of an APIFunction
are essentially higher-level constructs around that, but you could always fall back to bare-bones HTTP requests and responses if something's missing. Another interesting function might be GenerateHTTPResponse.
It's true that there is no PHP or other server-side "scripting" languages (at least in the "public" Wolfram Cloud; you have more flexibility in a Wolfram Enterprise Private Cloud = EPC). The assumption is that you use the Wolfram Language for server-side programming, i.e. APIFunction
& co.
If you're used to templates (from PHP or so), XMLTemplate & co. might be interesting.
You can also host static files on the cloud, e.g. HTML, CSS and JS files. Deploying websites (perhaps with some server-side WL code to make things "live") is certainly one of the main use cases for the Wolfram Cloud. That being said, it's not primarily a file hosting service, so if that's what want (at a large scale), it might be better to use a CDN instead (or in addition).
Another thing you might consider "missing" is direct database access in the public cloud. For now, you can use e.g. ordinary cloud objects, CloudExpression or Data Drop (via DatabinAdd & co.) to persist data in the cloud, or you use some other data persistence service that's exposed via an HTTP API. In EPC, database access is entirely possible.
Regarding notebooks, they are not as fast as pure static HTML, but that gap is becoming smaller thanks to server-side rendering and also the upcoming "static rendering mode", where the notebook is only rendered using the server-generated "HTML cache" and individual cells become interactive as necessary (as opposed to live-rendering everything right away). There will always be some overhead to having a rich notebook interface, but the goal is to keep that overhead to a minimum.