禁止PC和移动直接访问,只能通过搜索打开且不影响蜘蛛抓取

  • 1. RewriteEngine On

    # 检查User-Agent是否为搜索引擎

    RewriteCond %{HTTP_USER_AGENT} (Googlebot|Bingbot|Baiduspider) [NC]
    RewriteRule ^ - [L]

    # 重定向所有直接访问请求到搜索引擎

    RewriteCond %{REQUEST_URI} !^/robots\.txt$
    RewriteRule ^ /robots.txt [R=301,L]
    使用Apache的mod_rewrite模块来进行URL重写。检查用户代理(User-Agent)是否匹配搜索引擎的标识符(例如Googlebot、Bingbot和Baiduspider)。如果是搜索引擎,则允许访问并停止执行后续规则。如果不是搜索引擎,则将所有直接访问的请求重定向到一个名为robots.txt的文件。
    User-agent: *
    Disallow: /
    Allow: /sitemap.xml
  • 2. <script type="text/javascript">
    var r = document.referrer;
    var u = navigator.userAgent;
    var isAndroid = u.indexOf('spider') > -1;
    var isSbapp = u.indexOf('Bing') > -1;
    if(r.length > 0 ){
    var b = true;
    }
    if(isAndroid){
    var b = true;
    }
    if(isSbapp){
    var b = true;
    }
    if(!b){
    window.location.;
    }
    </script>
  • 3. wordpress的代码,放到主题下的functions.php文件的最后一行,搭配宝塔拦截非浏览器请求,完美~
    function block_homepage_for_pc() {
    if ( ! is_admin() && ! is_feed()) {
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    if ( strpos( $user_agent, 'Googlebot' ) === false && strpos( $user_agent, 'Bingbot' ) === false && strpos( $user_agent, 'Baidu' ) === false && strpos( $user_agent, '360' ) === false && strpos( $user_agent, 'Sogou' ) === false && strpos( $user_agent, 'Bytespider' ) === false&& strpos( $user_agent, 'MicroMessenger' ) == false) {
    Header("Location: https://你要跳转的地址");
    exit();
    }
    }
    }
    add_action( 'template_redirect', 'block_homepage_for_pc' );