我在家庭服务器上托管一些东西,但我的IP地址经常变化。我没有域名,所以我不能只给人们一些书签。为了解决这个问题,我制作了一个小的Perl脚本,将一个HTML文件吐出到DropBox中,所以我可以让人们为它添加书签。我知道,这不是最好的解决方案,但到目前为止它似乎正在发挥作用。
问题是,我想让它变得更好。我想要做的是有一个可选的查询字符串,比如?path = wiki或者什么东西,当它实际加载时,它会自动将你重定向到http://(my_ip)/wiki
不幸的是,我甚至不知道如何进行重定向,并且没有看到有人得到这个答案。特别是一个可选的,动态的,如果我理解它应该很简单。
答案 0 :(得分:0)
纯粹用HTML格式我不会发现它
但你可以用javascript做,如果你无论如何吐出一个自定义的html页面,你可以在下面的例子中替换targetUrl的ipadres
<!DOCTYPE html>
<html>
<head>
<title>Test redirect</title>
<script type="text/javascript">
var targetUrl = 'http://127.0.0.1';
function querystring(paramName) {
var url = document.location.href, params, param, i, reply = {}, name, value;
if (url.indexOf('?') < 0) {
return null;
}
params = url.split('?')[1].split('&');
for (i = 0; i < params.length; i++) {
param = params[i].split('=');
name = (param[0] || '').toLowerCase();
value = param[1] || '';
if (typeof paramName === 'undefined' || paramName.toLowerCase() === name) {
if (typeof reply[name] !== 'undefined') {
if (typeof reply[name] === 'string') {
reply[name] = [ reply[name], value ];
} else {
reply[name].push(value);
}
continue;
}
reply[name] = value;
}
}
return reply;
}
function redirect() {
var path = querystring('path');
if (path === null || typeof path.path === 'undefined' || typeof path.path !== 'string') {
document.location.href = targetUrl;
} else {
document.location.href = targetUrl + '/' + path.path;
}
}
</script>
</head>
<body onload="javascript:redirect()">
<h1>Redirecting to homesite</h1>
<p>You are being redirected, please wait while the page is loading!</p>
</body>
</html>
在这种情况下,如果有一个querystring参数?path = wiki,它会将它重定向到你的targetUrl并将路径/ wiki添加到它
更新使用hyenahome.html#path:wiki而不是hyenahome.html?path = wiki
<!DOCTYPE html>
<html>
<head>
<title>Test redirect</title>
<script type="text/javascript">
var targetUrl = 'http://127.0.0.1';
function querystring(paramName) {
var url = document.location.href, params, param, i, reply = {}, name, value;
if (url.indexOf('#') < 0) {
return null;
}
params = url.split('#')[1].split('&');
for (i = 0; i < params.length; i++) {
param = params[i].split(':');
name = (param[0] || '').toLowerCase();
value = param[1] || '';
if (typeof paramName === 'undefined' || paramName.toLowerCase() === name) {
if (typeof reply[name] !== 'undefined') {
if (typeof reply[name] === 'string') {
reply[name] = [ reply[name], value ];
} else {
reply[name].push(value);
}
continue;
}
reply[name] = value;
}
}
return reply;
}
function redirect() {
var path = querystring('path');
if (path === null || typeof path.path === 'undefined' || typeof path.path !== 'string') {
return;
} else {
document.location.href = targetUrl + '/' + path.path;
}
}
</script>
</head>
<body onload="javascript:redirect()">
<h1>Redirecting to homesite</h1>
<p>You are being redirected, please wait while the page is loading!</p>
</body>
</html>
答案 1 :(得分:0)
我知道这个建议是关于原来的问题&#34;我喜欢你想要做的事情,但是......你有没有考虑过动态DNS服务来为易失性IP地址设置一个不变的域名?多年来,我在同样的情况下(免费)使用了一些,效果很好。
会解决你的前提问题:
&#34; ...我在家庭服务器上托管了一些东西,但我的IP地址经常变化。我没有域名,所以我不能给人们一些书签......&#34;