allora, al posto della 404 ci metti una tua pagina asp...diciamo che la chiami "redirecter.asp"
in questa pagina fai
1) ricavi in querystring la stringa della pagina errata
2) la pulisci, ricavi quello che ti serve a seconda della tua struttura
3) costruisci la vera url
4) ricavi la pagina con xmlHTTP e poi stampi il risultato e il gioco è fatto
questo era un esempio che mi sono fatto in locale (un esempio minimo, magari con piu controlli e usando le regexp sarebbe venuto meglio) che cmq funzionava abb bene...non l'ho mai migliorato perchè poi ho scoperto che aruba non lo supportava e quindi nisba 
codice:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<base href="http://localhost/Di%20Marco/website/">
<%
dim total_url,base,nurl,errore
total_url=replace(request.querystring,"404;","")
base="http://localhost/Di%20Marco/website"
total_url=replace(total_url,base,"",1,-1,1)
errore=0
if instr(1,total_url,"/foto/",1)>0 then
if instr(1,total_url,"/1/",1)>0 then
nurl="show_foto.asp?id=1"
elseif instr(1,total_url,"/2/",1)>0 then
nurl="show_foto.asp?id=2"
else
errore=1
end if
else
errore=1
end if
if errore>0 then
nurl="no_page_found.asp"
end if
dim objXMLHTTP
set objXMLHTTP=server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
objXMLHTTP.open "GET", base & "/" & nurl,false
objXMLHTTP.send
response.ContentType="text/html"
response.Write objXMLHTTP.responseText
set objXMLHTTP=nothing
%>
da notare il <base="..."> in testa alla pagina

EDIT: qui la url che andavo a modificare erano www.dimarcosport.it/NEGOZI/FOTO/1/VIA_ROMA.html e http://www.dimarcosport.it/NEGOZI/FO...BENEDETTO.html tanto per farti capire cosa dovevano cercare quella serie di instr