網站收錄

URL 寫法不一致带来的收錄麻烦:大小寫、结尾斜杠與參數顺序

同一個頁面如果存在多種 URL 寫法,爬虫往往會当成多個地址分別排队和處理,既分散抓取资源,也让權重和索引狀態變得混乱。這篇文章把大小寫、结尾斜杠、參數顺序、中文编碼這几類常见寫法差异拆開讲,並给出一套可执行的自查顺序。

網站收錄

URL 寫法不一致带来的收錄麻烦:大小寫、结尾斜杠與參數顺序

判断一個頁面是否被收錄,大多數人先看内容,再看标簽。但在爬虫眼里,頁面的第一身份是 URL。同一個頁面如果存在几種不同的 URL 寫法,它就不是一個頁面,而是几個待處理的地址。這些地址會各自排队、各自抓取,最後在索引里形成互相竞争的结果。

下面按几種最常见的寫法差异,说说它們分別會带来什么問题,以及怎么查。

為什么同一頁面會出現多個 URL

URL 的重复很少是故意造成的,多數来自几個日常動作:站内連結從不同位置生成时大小寫没统一;導航里寫的是带斜杠的目錄形式,正文連結寫的是不带斜杠的形式;分享連結被加上了追踪參數;後台切換過 CMS 或做了伪静態,舊寫法仍然能訪問。只要其中任何一種寫法返回正常頁面,它就有可能被單獨抓取。

大小寫:先確認服務器是否区分

是否区分大小寫,取决于服務器和系統环境。Linux 上常见的 Nginx、Apache 預設区分大小寫,/News 和 /news 是两個不同的地址;Windows 环境下的 IIS 通常不区分。同一個站如果換過服務器,情况還可能發生變化。

  • 用两種寫法分別訪問,看是否都返回正常内容。
  • 如果都返回 200 且内容相同,說明這两個地址都在對外供應同一個頁面。
  • 看頁面里的 canonical 指向哪一個,確認自己声明的首選版本。

處理方式通常是二選一:要么让非首選寫法 301 跳到首選寫法,要么统一站内所有連結的寫法,让另一種寫法根本不出現在頁面上。

结尾斜杠:目錄形式和文件形式

带斜杠和不带斜杠往往被服務器当作两個地址。/about/ 和 /about 如果都能打開同一個頁面,就等于對外提供了两個入口。常见做法是選一種作為首選,另一種用 301 跳過去。選哪一種不重要,重要的是站内連結、sitemap、canonical 三處的寫法保持一致,不要一處带斜杠一處不带。

參數顺序與無用參數

參數類頁面最容易产生寫法分叉。參數的先後顺序不同,URL 字符串就不同,例如 ?type=1&page=2 和 ?page=2&type=1,服務器返回的内容完全一样,但爬虫看到的是两條地址。另外還有几類參數會持續制造新 URL:

  • 来源追踪參數,如 utm_source、from、ref 之類。
  • 會话或临时标识參數,如 sid、sessionid。
  • 排序、篩選、每頁數量等可自由组合的參數。

能去掉的就不要在站内連結里带上;必须保留的,可以通過 URL 參數工具或服務器規則做归一處理。不要僅靠 robots.txt 去挡,那只阻止抓取,不解决地址重复。

中文與特殊字符的编碼

中文路径在传輸时會被编碼成 %E4%B8%AD 這样的形式。這里有一個容易被忽略的细节:十六進制字母的大小寫不同,编碼後的字符串也不同,%e4 和 %E4 在部分系統里被视作两個地址。如果站内不同位置生成的编碼大小寫不一致,同样可能分叉。更稳妥的做法是栏目和文章路径尽量使用英文或拼音,中文标题放在頁面的标题和 H1 里。

URL 長度與层級

层級過深的 URL 通常意味着内鏈入口少,爬虫要到更深處才能發現頁面,抓取频率也更容易變低。這不是说長 URL 一定不被收錄,而是它往往和站内结构問题一起出現。把重要内容放在較浅的层級,比事後調整 URL 更省事。

可以按這個顺序自查

  1. 抽查一批頁面,把站内指向它們的連結找出来,看是否存在大小寫、斜杠不一致的情况。
  2. 對比 sitemap 里寫的 URL 和頁面 canonical 声明的 URL,两者應完全一致。
  3. 用抓取工具批量訪問,记錄所有返回 200 但内容相同的地址,归類整理。
  4. 對確認重复的地址,确定一個首選版本,其余用 301 指向它。
  5. 回到頁面模板和編輯流程,從生成环节避免再次产生新寫法。
URL 寫法统一這件事,本质上不是為了让頁面更快被收錄,而是减少爬虫需要處理的重复地址,让抓取资源花在真正有内容的頁面上。處理完之後索引狀態會不會變化、多久變化,仍然取决于頁面本身的质量和站点整体情况,没有固定的時間表。