I know you can edit a hosts file to redirect a URL to an IP address as so:
127.0.0.1 google.com
but how do you force a redirect to a URL instead of an IP address?
e.g.
mysite.com/welcome.aspx google.com
The explicit URL doesn't work and assuming mysite.com's IP is 222.222.222.222, the following doesn't work either:
222.222.222.222/welcome.aspx google.com
You can't. A redirect requires a webserver to accept the first request and send back the redirect. The "hosts" file just lets you set your own DNS records.
No, but you could open a web server at, for example, 127.0.0.77 and use it to check if the Request URI is "/welcome.aspx"... If yes redirect to google, if not load the original site.
127.0.0.77 mysite.com
Apply this trick.
First you need IP address of url you want to redirect to. Lets say you want to redirect to stackoverflow.com To find it, use the ping command in a Command Prompt. Type in:
ping stackoverflow.com
into the command prompt window and you’ll see stackoverflow's numerical IP address. Now use that IP into your host file
104.16.36.249 google.com
yay now google is serving stackoverflow :)
You could use the RedirectMatch directive in Apache to do something similar you want.
It's pretty simple.
RedirectMatch / http://222.222.222.222/
Anyway, I can't see any reason to do that thing. Aren't you trying to intercept traffic? There are better ways. For Linux boxes as a router: iptables -j REDIRECT + Squid or Apache. For Cisco routers, you can use WCCP to a Cache or Web Server...
hosts file:
1.2.3.4 google.com
1.2.3.4 - ip of your server.
Run script on the server for redirecting users to url that you want.
Make sure to double the entry with an additional "www"-prefix. If you don't addresses like "www.acme.com" will not work!
来源:https://stackoverflow.com/questions/3266483/editing-hosts-file-to-redirect-url