我有两个链接:
http://something.something.com/ (an local institute server...)
http://xxx.xxx.xxx.xxx/ (an amazon cloud C2)
我希望我的用户和几乎每个人都可以访问http://something.something.com/
,但此链接不是我想要配置的,我只有FTP访问权限,我希望它默默地将访问者重定向到http://xxx.xxx.xxx.xxx/
。
我已经研究和测试了,使用 iframes,我没有翻译链接,例如,我没有http://something.something.com/something/
默默地翻译成http://xxx.xxx.xxx.xxx/something/
,在 iframe 上,它在本地服务器中搜索something
,但它不存在。并且导航 iframe 没有反映本地主机地址
到目前为止,我所阅读的内容产生了一些想法,例如使用postMessage
或.htaccess
,但我对此感到困惑,因为我不知道什么是最好的(甚至有效的)解决方案,因为我甚至不确定我会在谷歌上搜索什么,真的很感谢指导。
更新.1:
我通过FTP的访问权限有限,它是一个共享域,所以我有一个home/www/mydir
目录,我无权访问服务器根目录或系统和服务配置。
在本地网络上,您可以通过将 IP 注册到每台本地 PC 上的/etc/hosts
来创建别名。
xxx.xxx.xxx.xxx someting.something.com
这比较棘手,但我已经解决了。更糟糕的是,我的local
地址不允许使用.htaccess
代理规则,所以我依靠iframe
和postMessage
和.htaccess
。
在为缺乏代理方式而苦苦挣扎之后,我已经配置了.htaccess
,因此任何链接都会导致相同的地址,即我的index.html
文件:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule .* /index.html [L]
在local server
,用户访问的那个,我这样做了:
<iframe id="subD" width="100%" height="100%" src="http://x.x.x.x">
Sorry your browser did not support iframes.
</iframe>
<script>
// load url on iframe
var sub = window.location.pathname;
document.getElementById("subD").
contentWindow.document.
location.href="http://x.x.x.x" + window.location.pathname;
//get url from amazon server
window.addEventListener("message", updateUrl, false);
function updateUrl (event) {
var origin = event.origin || event.originalEvent.origin;
if (origin !== "http://x.x.x.x")
return;
current = window.location.pathname
//take care of maintaining a back history whille navigating
window.history.pushState({"link":current},"",event.data);
}
// on back/next event load history on frame
window.onpopstate = function(e){
if(e.state == e.state.link){
var rand = Math.floor((Math.random()*1000000)+1);
var iframe = document.getElementById('subD');
iframe.src = "http://x.x.x.x" + e.state.link + "?uid=" + rand;
} else {
history.back();
}
};
</script>
在amazon server
我发送消息以更新local server
:
<script>
parent.postMessage(window.location.pathname,"http://something.something")
</script>