搜索引擎友好的网站代码,说到底就一句话:让爬虫能顺利抓到、看懂、愿意收录,同时让用户打开不难受。爬虫不是人,它不会点按钮,也不会被动画打动。它看的是HTTP状态码、HTML结构、链接、JavaScript渲染结果,还有页面加载速度。代码写得再漂亮,如果爬虫进不来,或者进来只看到一堵空墙,那对搜索来说就是灾难。
先看服务器和URL。每个能访问的页面最好返回200,不存在的页面老老实实返回404,别搞“软404”——页面显示“找不到”,状态码却是200,这会把爬虫绕晕。永久改地址用301,临时跳转用302,别用JavaScript跳转或者meta refresh代替301,搜索引擎虽然能识别一部分,但传递权重和抓取效率都差一截。robots.txt别手滑屏蔽CSS和JavaScript文件,Google官方文档说得很清楚,如果禁止抓取这些资源,它就没法完整渲染页面,索引质量会受影响。现在Google是移动优先索引,主要用智能手机爬虫抓取,所以响应式设计比单独做m站更省事,也避免同一内容出现多个URL。URL尽量短、小写、用连字符,参数别堆成火车。重复内容用canonical标签指明主版本,多语言用hreflang对应好。
HTML结构是爬虫理解页面的地图。每页title唯一,别所有页面都叫“首页”。meta description不直接参与排名,但影响搜索结果点击率,写清楚页面讲什么。H1一个就够,后面H2、H3按内容层级来。header、nav、main、article、section、footer这些语义标签,比一堆div更容易让机器判断哪块是正文、哪块是导航。图片加上alt,既服务无障碍也服务搜索。链接一定用a href,别用onclick或者javascript:void(0),爬虫跟不了这种“假链接”。内链的锚文本别总写“点击这里”,写“搜索引擎友好的代码要点”这种有信息量的词。面包屑导航和结构化数据也值得做,JSON-LD格式的Schema.org标记,比如Article、Product、FAQ、BreadcrumbList,Google支持得不错,内容匹配的话有机会出富媒体结果。但别乱标,标记和页面内容不一致,反而会被判作弊。
JavaScript是很多现代网站的坑。搜索引擎能执行JS,但有渲染预算和排队时间。Googlebot会先抓HTML,再排队渲染JS,页面越复杂,等待越久,有些内容可能迟迟不进索引。所以关键内容尽量服务端渲染或静态生成,至少保证直接访问URL时HTML里就有正文。用History API做前端路由可以,但每个页面要有独立URL,直接打开能返回完整HTML。无限滚动最好配分页链接,别让爬虫滚不到底。懒加载可以用,但首屏内容和主要文字别懒加载,更别等用户点击才出现。测试的时候,用Google Search Console的网址检查看渲染后的HTML,用Rich Results Test看结构化数据,用移动友好测试看手机端表现。
性能这块,Core Web Vitals是硬指标。LCP最好小于2.5秒,INP小于200毫秒,CLS小于0.1。2021年Google推出页面体验更新,2024年3月INP正式取代FID。这些指标不直接等于排名,但影响抓取预算和用户体验。图片用WebP或AVIF,配上srcset做响应式,写清宽高避免布局跳动。字体用font-display: swap,关键资源预加载,第三方脚本能少则少。服务器开HTTP/2或HTTP/3,上CDN,配好缓存头,TTFB尽量压到0.8秒以内。站点地图sitemap.xml列出重要URL,lastmod写真实修改时间。分页、筛选参数别制造大量低质URL。HTTPS现在是基本盘,混合内容会让人不放心,也可能影响抓取。

代码干净不等于简陋。DOM别嵌套太深,重复代码能抽就抽,表格布局早该退休。隐藏文字、关键词堆砌、给爬虫看一套给用户看另一套,这些老套路一旦被抓,轻则不收录,重则降权。可访问性做好,语义标签、键盘操作、对比度,这些和SEO很多时候是一回事。
说到底,搜索引擎友好的代码就是可抓取、可理解、可索引、加载快、移动端正常。不用一开始就追求满分,先把状态码、链接、HTML语义、服务端渲染和核心性能做好,再去Search Console看抓取和索引报告,哪里报错改哪里。代码是给用户和爬虫共同铺的路,路顺了,内容才有机会被看见。