The problem lies here:
if(isdigit(argv[i] != true)
You need to fully understand how isdigit() works, specifically the return value, and the numeric value of true.
The is() family of functions all return an int. When true, each will return a different number that is a power of 2. This goes back to the history of programming and register values used in ...
The absolute path is a part of the request-target, so in a way yes 1 and 3 are the same one.
There are many ways to think about this, and your way is not any more incorrect or correct than others. You can group several requirements into error cases like you do, or you could also just check each requirement separately.