Banner

给网站外链添加GO跳转提示代码

经常看到一些网站点击外链跳转到其他网站上的时候都会有一个跳转提示页面(如下图所示)。据说是有利于保护站点权重,增加网站安全或用户体验,个人只是觉得好看。网上相关代码教程…

给网站外链添加GO跳转提示代码

作者
橙子2024-04-24 17:19 3031 浏览
打赏 收藏
经常看到一些网站点击外链跳转到其他网站上的时候都会有一个跳转提示页面(如下图所示)。据说是有利于保护站点权重,增加网站安全或用户体验,个人只是觉得好看。网上相关代码教程也有很多,那么如何添加网站外链这个GO跳转呢?以下是无需插件添加GO跳转的方法。css样式效果可以改成自己喜欢的。

  经常看到一些网站点击外链跳转到其他网站上的时候都会有一个跳转提示页面(如下图所示)。

0117193947.jpg

  据说是有利于保护站点权重,增加网站安全或用户体验,个人只是觉得好看。网上相关代码教程也有很多,那么如何添加网站外链这个GO跳转呢?以下是无需插件添加GO跳转的方法。css样式效果可以改成自己喜欢的。

  在你的网站根目录新建一个go.php文件,将以下代码复制到go.php里面保存即可。

<?php
// ================= 配置区域 =================
$myDomain = 'http://www.kmbk.cn'; // 请修改为你自己的顶级域名
$siteName = '酷猫博客';      // 网站名称,用于标题显示
// ===========================================

/**
 * 判断是不是自己的域名
 * @param string $domain 要进行判断的域名或URL
 * @param string $my 自己的域名
 * @return bool
 */
function isMyDomain($domain, $my) {
    if (empty($domain)) return false;
    // 去除查询参数
    preg_match('/([^\?]*)/i', $domain, $match);
    if (isset($match[1])) $domain = $match[1];
    
    // 提取主机部分
    preg_match('/([\w-]*\.[\w-]*)\/?.*/i', $domain . '/', $match);
    
    if (isset($match[1]) && strtolower($match[1]) == strtolower($my)) {
        return true;
    }
    return false;
}

// 1. 获取并清洗 URL 参数
// 使用更严谨的正则:匹配 url= 开头,直到遇到 & 或字符串结束
preg_match('/(?:^|&)url=([^&]+)/i', $_SERVER["QUERY_STRING"], $jumpUrlMatch);

if (!isset($jumpUrlMatch[1])) {
    header("Location: /");
    exit();
}

$rawUrl = urldecode($jumpUrlMatch[1]);

// 2. 安全校验与协议补全
// 检查是否包含合法的 http/https 头
if (!preg_match('/^https?:\/\//i', $rawUrl)) {
    // 如果没有协议头,尝试补全 http:// (仅当看起来像域名时)
    if (preg_match('/^[\w-]*\.[\w-]*/i', $rawUrl)) {
        $rawUrl = 'http://' . $rawUrl;
    } else {
        // 格式完全错误,回首页
        header("Location: /");
        exit();
    }
}

// 3. 防止开放重定向漏洞 (Open Redirect)
// 解析协议,确保只有 http 和 https
$scheme = parse_url($rawUrl, PHP_URL_SCHEME);
if (!in_array(strtolower($scheme), ['http', 'https'])) {
    header("Location: /");
    exit();
}

$url = $rawUrl;

// 4. 判断是否为站内链接
$isInternal = false;
$host = parse_url($url, PHP_URL_HOST);
if ($host && stripos($host, $myDomain) !== false) {
    $isInternal = true;
}

// 如果是本站链接,直接跳转,不展示中间页
if ($isInternal) {
    header("Location: {$url}");
    exit();
}

// 5. 准备页面显示数据
$title = '页面加载中,请稍候...';
$fromUrl = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : '';
$echoTips = !isMyDomain($fromUrl, $myDomain);

// 安全转义:用于 HTML 显示
$safeDisplayUrl = htmlspecialchars($url, ENT_QUOTES, 'UTF-8');
// 安全转义:用于 JS 变量
$safeJsUrl = addslashes($url);

?>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=Edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>网址链接跳转安全提醒 _ <?php echo $siteName; ?></title>
	<link href="favicon.ico" rel="shortcut icon" type="image/x-icon">
	<style>
	html,body{background: #f5f5f5;font-family: PingFang SC,Hiragino Sans GB,Arial,Microsoft YaHei,Verdana,Roboto,Noto,Helvetica Neue,sans-serif;padding:0;margin:0;}
	a{text-decoration:none;}
	.urlArea			{ padding-top:15%;width:470px;margin:auto;word-break: break-all; }
	.urlArea .main		{ background:#fff;padding:25px;border-radius: 10px; box-shadow:5px 9px 17px rgba(102,102,102,.75);}
	.urlArea .flex		{ display:flex;align-items:center; }
	.urlArea .btn		{ display:flex;align-items: center; }
	.urlArea .tip		{ background:#e8eefa;padding:14px;margin-bottom:25px;border-radius:4px; }
	.urlArea .urlColor	{ color:red; word-break: break-all; }
	.urlArea .urlBox	{ font-size: 14px;color: #222226;line-height: 40px;margin-bottom:20px; }
	.urlArea .ico		{ width:24px;height:24px; }
	.urlArea .iosk	    { color:red; font-size:14px; cursor: pointer; user-select: none;}
	.urlArea #isOk	    { border:1px solid #A6A6A6; border-radius:2px; width:14px; height:14px; vertical-align:-2px; margin-right:3px;}
	.urlArea .goBtn		{ white-space: nowrap;font-size: 14px;background-color: #408ffa;color:#ffffff;border: 1px solid #408ffa;display:inline-block;box-sizing: border-box;padding:6px 18px;border-radius: 18px;margin-left:20px; cursor: pointer; transition: all 0.3s; }
    .urlArea .goBtn:hover { background-color: #2b74e8; border-color: #2b74e8; }
    /* 禁用状态样式 */
    .urlArea .goBtn.disabled { background-color: #ccc; border-color: #ccc; cursor: not-allowed; opacity: 0.6; }
	.urlArea .icoTxt	{ font-size: 16px;font-weight: 600;color: #222226;line-height: 22px;margin-left:14px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap; }
	@media (max-width: 480px){
		.urlArea	{ padding-top:15%;width:94%; }
        /* 移动端微调,保持布局紧凑 */
        .urlArea .btn { flex-wrap: wrap; }
        .urlArea .goBtn { margin-left: 0; margin-top: 10px; width: 100%; text-align: center; }
	}
	</style>
</head>
<body>
	<div class="urlArea">
		<div class="main">
			<div class="flex tip">
				<img class="ico" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADWUlEQVRoQ+2YvWsUQRiH33fmOMQiRQor7RQSweB9KAQEg1iYKFaZnJJ/wcTOMhLs7Ez8FwLebikasTGCoJDcHSoYQbHRyiKFhajczCu3SS73sbfzsXNJDnLV3s4y83vm3X12dhAG/IcDnh+OAHpVkITISvg2DYyQjwyVcXGt3o9q960CdZELAWC6ERoRn/CgentgAGimOCVJPmsNzJFfx2DjuW8I7xWg+xMZ9enXRwIaaQ2LgJ/Z2aFzvm8l7wBypjBPpB7FzTQiu8uDypLPKngFIDE+rODPFwIYjgUA2GJw7AyGb7d8QXgFkCK/TEB3ksIh4GMeVucOHQCV8qNKwQcCymgA6ozBGJarmz4gvFWgLvKrAHTNLBS+yITVSbNrk6/yAhCnTV04X1pNDdBLmzoAX1pNDZCkTS2EB62mAtBpUwvgQaupAEy0qYdIp1VnAFNtGgCk0qozgJ02tRjOWnUCoFJxUiqZuLJEgB+AbCWKTmqWAE4mYXDGp7C8sapD7Wy3BjDVJke8iUH1aZS/lL8hFUXHvX6uWrUGMNUmByxiWK1sAxTyUqnoOBHCQatWADbadAJw0KoVgJwpLBEpo5WkC0CjOohsmQeVeV21dtuNAWy16QwAaKVVYwBbbboCbM+s+WrVCMBEm50lTwcAYKpVLYCpNrsALDXa7XezTQAtgKk2Y14wVi+yuIfWZBMgEcBGm6bWsLkODbSaCGCjTZtgNtfqtNoTwFabMffwb0DYWQvBLAEdtwm+5/lkrfYEsNVmazgElIzxcSyvr0dLiVu5opL4joC4C0SSVmMBXLTZBoDwnge1863npMjVCKDtnA1ML612Abhqs70C8JPB6VMYhv+iCgiRVfD1OwGcsAndPim4yUaHxjr3VrsAZCk3RwpS718i4gpjdK8RQil8SESzruGbzwODeV6uLXdM1t7fg9amDjBOq20VOAza1EJ0rFabAGm1qRvYVzt2rFabAHWRa3zjetmv9BU2oZ/VTFibarRHACQuXJZQX9uHgb0NwZFdwaDyKgKQorBAoBa99b4PHSHCAx7UFnYqULikUL0mArYPY6ceInrTA05gWHmz9xCL4kWF6ioAZFOP0NcO8C8jerm746H9HuhrFg+dHwF4mMRUXQx8Bf4DeBHHQHvQneAAAAAASUVORK5CYII=" alt="温馨提醒">
				<div class="icoTxt">即将跳转到外部网站<span style="color:#c8c8c8;font-weight:bold;"> &nbsp; &nbsp;安全性未知,是否继续?</span></div>
			</div>
			<div class="urlBox">
				<span>
					您将要访问的链接不属于本网站,请注意您的账号和财产安全。<br />
					您访问的网址是:<a class="urlColor" href="<?php echo $safeDisplayUrl; ?>" target="_blank" rel="nofollow noopener noreferrer"><?php echo $safeDisplayUrl; ?></a>
				</span>
			</div>
			<div class="btn">
				<label class="iosk">
                    <input type="checkbox" id="isOk" value="1" />
                    已知晓风险,本人自愿访问,与本网站无关。
                </label>
				<!-- 默认添加 disabled 类,JS 初始化后会移除 -->
				<a id="goBtn" class="goBtn disabled" href="javascript:void(0);" target="_self" onclick="return CheckGoUrl()">继续访问</a>
				<script language="javascript" type="text/javascript">
				var goUrl = "<?php echo $safeJsUrl; ?>";
                var btn = document.getElementById("goBtn");
                var checkbox = document.getElementById("isOk");

                // 初始化状态:未勾选时禁用按钮
                function updateBtnState() {
                    if (checkbox.checked) {
                        btn.classList.remove("disabled");
                        btn.href = goUrl; // 勾选后才赋予真实链接
                    } else {
                        btn.classList.add("disabled");
                        btn.href = "javascript:void(0);";
                    }
                }

                // 监听复选框变化
                checkbox.addEventListener('change', updateBtnState);
                
                // 初始执行一次
                updateBtnState();

				function CheckGoUrl(){
					if (checkbox.checked){
						window.location.href = goUrl;
						return true;
					}else{
						alert("请先打钩左侧【本人已知晓风险】项!");
						return false;
					}
				}
				</script>
			</div>
		</div>
	</div>
</body>
</html>

在发布文章时,外链带上 你的域名/go.php?url=  如示例:跳转到百度 https://你的域名/go.php?url=www.baidu.com

点击查看跳转演示

相关标签: 跳转提示代码
打赏 :
分享 :
扫码支持 扫码支持

文章标题:给网站外链添加GO跳转提示代码

文章链接:https://www.kmbk.cn/Web/66.html

所有文章未经授权禁止转载、摘编、复制或建立镜像,违规转载法律必究。

本站部分内容来源于网络,仅供大家学习与参考,如有侵权,请联系站长邮箱:906080088@qq.com进行处理。

西部数码
文章评论
浏览器版本过低,不支持评论功能,请升级或更换浏览器!