Here's how I would do it:
Add a filter that adds the IP trying to access port 80 for the first time to an Advertisment list:
#Replace 192.168.99.0/24 with subnet that covers PPPOE client pool or regular client subnet it applies to everyone
#Address list timeout is the time for witch the client will be redirected to Advertisment server
/ip firewall filter
add action=add-src-to-address-list address-list=Advertisment address-list-timeout=1m chain=forward dst-port=80 protocol=tcp src-address=192.168.99.0/24 src-address-list=!NoAdvertisment place-before=0
Then add a rule that will prevent the client to be re-added to Advertisment list for a given time (1h in this example):
#Same story for 192.168.99.0/24 and replace 1h with time for witch client is imune to advertisment
/ip firewall filter
add action=add-src-to-address-list address-list=NoAdvertisment address-list-timeout=1h chain=forward dst-port=80 protocol=tcp src-address=192.168.99.0/24 src-address-list=Advertisment place-before=0
Now that we have address lists created you just need to choose what happens to the clients that are in Advertisment List, in this case, all tcp traffic on port 80 is redirected to prefered destination as long as the client is in Advertisment list:
#Replace 1.1.1.1 with the address of your http server
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=80 protocol=tcp src-address-list=Advertisment to-addresses=1.1.1.1 to-ports=80 place-before=0
I have tested this and it works.