The only way I could think of is the history API.
It's often used by single page applications (SPAs) to implement routing, so if you use browser controls to reload or move back and forth, you get more or less to the same state as before.
I do not think the problem is in register function or register.html. I ran them through check50 and they passed. A little detail I missed on the initial read was "got 200 in all my apology pages", all being the operative. I can merely speculate, but it is possible that the older (2017) version of the application is in play. I believe you are using the 2017 ...
When will it stop? The while loop that is. When this (SP[iter] != ' ' || SP[iter] != '?') is false. When is this (SP[iter] != ' ' || SP[iter] != '?') false? Never. If SP[iter] is space then SP[iter] != ' ' is false and SP[iter] != '?' is true. false || true is true. And versa vice. Your segfault eventually occurs here strncpy(&abs_path[iter - 1], &...
according to Wikipedia:
In computer networking, a port is a software construct serving as
a communications endpoint in a computer's host operating system.
when you execute
./server -p <port> <root>
where <port> is a valid port number, you're setting the server to listen to HTTP requests on the port with that number.
if you don't ...