如何实现禁止直接访问域名,仅允许外部链接和搜索引擎访问

查看 13|回复 1
作者:指数宝   
手动直接游览器输域名或者收藏夹 → 禁止提示页
点内页、刷新、二次访问 → 正常网站
从百度 / 外链点进来 → 正常网站
搜索引擎爬虫 → 抓取真实首页,正常收录
禁止提示页 不会被收录,
核心原则:搜索引擎 UA 一律白名单,永远返回真实内容,不要让爬虫看见提示页。
[ol]
  • server {
  •     listen 80;
  •     server_name www.你的域名.com;
  •     root /www/wwwroot/www.你的域名.com;
  •     index index.html index.php;
  •     # ------------------- 核心:只拦“人直接输域名”,爬虫全放行 -------------------
  •     set $show_landing 1;
  •     # 1. 搜索引擎爬虫:全部放行(最重要!)
  •     if ($http_user_agent ~* "baiduspider|googlebot|bingbot|sogouspider|360spider|bytespider|yisouspider") {
  •         set $show_landing 0;
  •     }
  •     # 2. 有外部来路:放行
  •     if ($http_referer != "") {
  •         set $show_landing 0;
  •     }
  •     # 3. 自己站内跳转:放行
  •     if ($http_referer ~* "^https?://(www\.)?你的域名.com") {
  •         set $show_landing 0;
  •     }
  •     # 4. 只有:无来路 + 不是爬虫 → 才显示提示页
  •     if ($show_landing = 1) {
  •         rewrite ^ /access_denied.html break;
  •     }
  •     # ------------------- 提示页:禁止被收录 -------------------
  •     location = /access_denied.html {
  •         root /www/wwwroot/www.你的域名.com;
  •         internal;
  •         add_header X-Robots-Tag "noindex, nofollow" always;
  •     }
  •     # 下面是你原有的php、静态资源等配置
  •     # location ~ \.php$ { ... }
  •     # ...
  • }[/ol]复制代码       创建禁止提示页面,在你网站根目录新建access_denied.html
    [ol]
  • 访问提示
  • *{margin:0;padding:0;box-sizing:border-box}
  • body{background:#f6f8fa;font-family:system-ui,sans-serif;display:grid;place-items:center;height:100vh}
  • .main{max-width:500px;width:90%;background:white;padding:40px;border-radius:16px;box-shadow:0 4px 15px rgba(0,0,0,0.08);text-align:center}
  • h1{font-size:26px;color:#f43f5e;margin-bottom:20px}
  • p{font-size:16px;line-height:1.8;color:#444}
  • ⚠️ 禁止直接访问
  • 请通过外部链接或搜索引擎进入本站
  • 请勿在浏览器地址栏直接输入域名访问
  • [/ol]复制代码

    域名, 爬虫

  • 脆弱   
    支持一下!技术贴
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部