Miranda wrote
As far as the port number, that is also one of the differences but we added the port number as part of the alias in the PortalAlias table, and the URLs are being rewritten with the port number. We also tried it on one of our dev machines with an alternate port, and this method worked fine.
After days of debugging...
My personal dev server had always been running on port 80, and only had localhost in my PortalAlias table. My co-worker's dev server was at one point running on port 8080, but he switched it to port 80 later on. He still had both localhost:8080 and localhost in his PortalAlias table, though. Our staging server was running on port 80, as well. The client was trying to set up under an alternate port on their dev server, so we gave them instructions on how to edit the PortalAlias table to include their ip:port info. They never attempted to set it up under port 80, so only had the alternate port info in the PortalAlias table. Everything worked but the human friendly URLs, as described in the original post.
In an attempt to reproduce their problem, I downloaded the exact files we'd sent them from our staging server to my local dev server and set it up also using an alternate port, 8080. I was now able to reproduce the 404 errors from the human friendly URLs. I switched back to port 80, and everything was fine. My co-worker double checked his setup running on 8080, and it was still fine. We set up a second instance of the site on our staging server on port 8080, and it was also fine.
So, now we have a staging server that works fine on the regular and an alternate port, we have 1 dev server that works fine on an alternate port, and we have my dev server that works on the regular port but not on an alternate port. So, my boss says, "try running your server on both 80 and 8080." So, I set up IIS to run on both ports, I added the second entry to the PortalAlias table, and restarted IIS. The site now worked on both ports! I then removed port 80 from IIS so that it was only running on 8080 again, and it still works. Whaaaaat?
Then I realized, the only thing that was different was before when I was swapping between 80 and 8080, I was changing the same entry in the PortalAlias table from localhost to localhost:8080 and back again, but when I set it up to run on both ports, I had 2 entries. When I went back to only running on 8080, I left both entries in the table. To confirm that having both the address with the alternate port and with no port at all was the issue, I removed the localhost entry from PortalAlias (leaving localhost:8080) and the site promptly broke.
So, to summarize all this craziness:
We needed to have both "server.com" and "server.com:8080" in the PortalAlias table so that URLs like "http://server.com:8080/home.aspx" would work, even if we weren't even running a server on port 80.
I hope this helps someone else in the future!