我想将URL中的IP地址替换为正常的域名。总之:用域名替换IP
Change
http://123.456.789.025/images/2015/a/
Into
http://images.domain.com/images/2015/a/
任何人都知道如何做到这一点?我在这里找不到它。
谢谢!
我想将URL中的IP地址替换为正常的域名。总之:用域名替换IP
Change
http://123.456.789.025/images/2015/a/
Into
http://images.domain.com/images/2015/a/
任何人都知道如何做到这一点?我在这里找不到它。
谢谢!
这基本上是不可能的,没有各种哈克方法。如果SPF记录已注册,您可以猜测哪个域与IP相关联,但这非常相似。 IP通常由数百甚至数千甚至更多的域共享。所以如果通过查询名称服务器,你可以发现哪些域名与IP地址相关联,即使那样你也不知道上千个顶级域名中哪一个是正确的。找到我能想到的唯一方法是使用顶级域名(URL)作为URL 和以IP作为URL来抓取页面,并比较输出。但是这非常棘手,因为当页面提供动态内容时,输出将会不同(实际上)每个请求。这将强制你必须为链接到IP的每个域做一个请求,直到你有一场比赛。
当然,当你知道了IP的事前,只需创建一个数组:
$ip2domain = array(
'123.123.123.123' => 'mydomain.com',
...
);
$url = 'http://'. $ip2domain['123.123.123.123'] .'/images/2015/a/';
编辑我看见你的编辑,你知道域等。在这种情况下,只是解构用php的原生地址parse_url()函数。构造URL,使用http_build_url():
$url = 'http://123.456.789.025/images/2015/a/';
$parts = parse_url($url);
$parts['host'] = 'example.com';
$final_url = http_build_url($parts); // http://example.com/images/2015/a
(有时不负有心人看在php.net代替;))
如果你知道会有永远IP存在(在其他情况下,这将替换查询字符串中一些其他IP):
$url = join($host, preg_split('/\d+\.\d+\.\d+\.\d+/', $url, /*limit*/1))
的URL输入到你的PHP脚本?你是否已经知道域名,或者你需要通过IP查找名称? –
听起来像是我的一个x-y问题 – andrew
我们知道并且在我们的服务器上运行域。我们只需要更换IP。 – KJS