The way that the web request is forwarded, it must land on an IP address. You could setup a DNS forwarder entry for the hostname you want, in the captive portal html (it will take php) code up a redirect such that if the URL is the IP, redirect to the hostname, then the user would only see the IP address if they caught it quickly before the second redirect kicked in.