Whatever else you do, apply for the position anyway. Make it clear in your application that, while your physical disability prevents you from performing offsite tasks, you have already demonstrated competence in the other parts of the job while in your current contract position.
What you need to keep in mind is that a job posting is essentially an advertisement, and everything in it can be subject to negotiation. Yes, the employer is saying they're looking for two full-time programmers who also do some offsite support — but they may be perfectly willing to settle for one full-time programmer who cannot do offsite work, and one who will do a little more, especially if the first programmer is already known to them and familiar with the job.
Sure, if they really just don't want to re-hire you for some reason, and have worded the new positions deliberately to exclude you, then doing this won't help. (In that case, you might also indeed have cause to sue; but you'd need to talk to a local lawyer about that.) However, if that's not the case — and the fact that they extended your contract suggests it may be so — then they may well be glad to have you apply, even if you don't technically satisfy all the stated requirements.
Approaching the person who'll actually be doing the hiring (that is to say, not the HR person who posted the ad, but whoever you'd actually be working for if you got the job), as littlekellilee suggests, may also be a good idea. Make sure not to come across in any way demanding or confrontational, but just mention that you heard about the new positions, and that you'd like to know more about the offsite work aspects so that you can decide if you should apply. At least, this will let them know that you're interested in a permanent position, which could be useful even if you don't end up getting this particular job (e.g. because they really do specifically need more offsite support staff).