PHP $_SESSION实现网站根目录分流:搜索引擎爬虫是否会爬取双站点?
关于搜索引擎爬虫与站点跳转按钮的问题解答
首先,咱们拆解下你的问题核心:你想用PHP的$_SESSION实现根目录的双按钮跳转,纠结爬虫会不会“点击”按钮爬取两个站点,以及是否需要在选择环节屏蔽爬虫。下面分点给你讲明白:
1. 搜索引擎爬虫的行为逻辑
爬虫本质是抓取页面中可识别的静态链接,而非像真人一样主动交互:
- 如果你的按钮是用纯HTML
<a>标签伪装的(比如加CSS改成按钮样式),那爬虫会直接读取href属性里的URL,不管有没有$_SESSION,都会把这两个链接加入爬取队列。 - 如果你的按钮是通过表单提交、JavaScript跳转来触发
$_SESSION设置再跳转的,那爬虫基本不会触发这个流程——大部分爬虫不会执行JS,也不会主动提交表单,只会解析静态HTML内容。这种情况下,爬虫不会通过这个按钮环节爬取你的两个站点,除非你在页面其他地方也暴露了这两个URL。
2. 要不要在选择环节屏蔽爬虫?
这完全取决于你的需求:
- 如果希望爬虫爬取这两个站点:建议用纯HTML
<a>按钮,不要依赖$_SESSION做跳转触发(除非你只是想记录用户选择,跳转本身用直接链接)。这样爬虫能直接发现链接,更利于SEO。$_SESSION可以用来记录用户后续的偏好,但不影响爬虫抓取核心链接。 - 如果不希望爬虫爬取其中一个或两个站点:不需要在选择环节特意屏蔽爬虫,反而应该用更标准的SEO手段:
- 在目标站点的
robots.txt里添加规则,禁止爬虫访问(比如针对子域名写Disallow: /); - 在目标页面添加
<meta name="robots" content="noindex">标签,告诉爬虫不要索引该页面; - 如果一定要用
$_SESSION+交互跳转,那爬虫本身就不会触发,相当于间接阻止了它们通过这个入口爬取,但要注意正常用户的跳转体验不能受影响。
- 在目标站点的
3. 关于$_SESSION的使用建议
如果你的$_SESSION是用来记录用户的选择(比如用户选了主站后,后续访问根目录自动跳转到主站),那这个逻辑对爬虫来说完全无效——因为爬虫不会保留会话($_SESSION依赖Cookie,爬虫默认不会携带Cookie),每次访问都是全新的请求,所以爬虫每次看到的都是两个按钮的初始页面,不会触发自动跳转。
总结一下:如果想让爬虫爬,就用直接链接按钮;不想让爬,用robots.txt或noindex;$_SESSION的交互逻辑本身对爬虫几乎没有影响,不需要特意在选择环节屏蔽它们。
内容的提问来源于stack exchange,提问作者Marcus Silverman
相关产品推荐
相关产品推荐

