The code is not returning an INTERNAL SERVER ERROR. Your server is doing this that I see. Your host is even telling you its something to do with htaccess or mod rewrite.
My test I showed you is most definately an auction feel free to login with Test and password testing. You will see it works fine. http://omegatron.net/classifieds/sho...php?product=28
Its not strange the code is no different between first or second bids. Your entering a bid into the bids table your not deleting old bids. They are still there. There are checks and balances to bump the highbidder and bid amounts on a product. The bidding aspects of this script have not changed since the script was released many years ago version 1.0.
Since the default code seems to be working you really need your host to answer directly what specifically on your server is causing your issue. Like I asked before he is saying there is some htaccess or mod rewrite thing going on what leads him to say this? Have you tried removing any htaccess files on your server?
There is nothing I can tell you here thats going to help since this issue seems related to a server issue on your end. A generic server 500 error is the most general of server responses so you always need to dive into your server error logs to point to what is the true issue. What is it that your server is balking at.