頭條搜索Robots協(xié)議的匹配機(jī)制主要涵蓋路徑(path)與參數(shù)(parameter)兩大核心模塊。系統(tǒng)支持兩種通配符:星號(hào)()與美元符號(hào)($)。其中,星號(hào)()可匹配任意有效字符的0個(gè)或多個(gè)實(shí)例,而美元符號(hào)($)則用于標(biāo)識(shí)網(wǎng)址的結(jié)束位置。這種設(shè)計(jì)確保了匹配規(guī)則的靈活性與精準(zhǔn)性,能夠適應(yīng)多樣化的URL結(jié)構(gòu)需求。
路徑部分的匹配邏輯與Google Robots協(xié)議保持一致,僅允許以正斜杠(/)或星號(hào)()開(kāi)頭的規(guī)則參與匹配。具體規(guī)則如下:
- /:匹配根目錄及其所有下級(jí)路徑。例如,可匹配`/`、`/fish/`、`/fish/salmon.html`等。
- /fish/:以`/fish/`開(kāi)頭的路徑,且末尾斜杠表示匹配該文件夾內(nèi)的所有內(nèi)容,如`/fish/`、`/fish/?id=anything`,但不匹配`/fish`或`/fish.html`。
- /.php:匹配所有以`.php`結(jié)尾的路徑,如`/filename.php`、`/folder/filename.php`,但不匹配`/windows.PHP`(因大小寫敏感)或`/filename.php?parameters`(因未使用結(jié)束符$)。
- /fish.php:匹配`fish`后接任意字符且以`.php`結(jié)尾的路徑,如`/fish.php`、`/fishheads/catfish.php`,但不匹配`/Fish.PHP`。
- /fish/:包含字符串`/fish/`的路徑,如`/search/fish/filename.php`,但不匹配`/Fish.PHP`。
需注意,末尾斜杠(如`/fish/`)會(huì)被系統(tǒng)忽略,等同于`/fish/`。路徑匹配嚴(yán)格區(qū)分大小寫,且需遵循“/”或“”開(kāi)頭的約束條件。
參數(shù)部分支持無(wú)序匹配,且參數(shù)的鍵(key)與值(value)均支持星號(hào)()通配符。具體規(guī)則如下:
- 無(wú)序匹配:參數(shù)順序不影響匹配結(jié)果,如`/home.php?mod=?`可匹配`/home.php?c=0&mod=939`,無(wú)需考慮`mod`與`c`的順序。
- 通配符應(yīng)用:
- 值通配:`/home.php?mod=?`匹配`mod`參數(shù)為任意值;`/home.php?mod=9`匹配`mod`值以`9`結(jié)尾的URL;`/home.php?mod=\39`匹配`mod`值以`39`結(jié)尾的URL。
- 鍵通配:`/home.php?mod=?`匹配鍵以`mod`結(jié)尾的參數(shù)(如`smod`);`/home.php?mod=?`匹配鍵以`mod`開(kāi)頭的參數(shù)(如`mods`);`/home.php?mod=?`匹配鍵包含`mod`字符串的參數(shù)(如`smods`)。
- 完全匹配:`/home.php?mod=9`僅當(dāng)`mod`值嚴(yán)格為`9`時(shí)匹配,不匹配`mod=939`。
- 前綴匹配:`/home.php?mod`可匹配`mod`開(kāi)頭的鍵(如`mods`),但不匹配`smod`;`/home.php?mod`則可同時(shí)匹配`mod`和`mods`。
參數(shù)匹配時(shí),系統(tǒng)會(huì)忽略參數(shù)順序,且通配符對(duì)鍵和值均生效,確保對(duì)復(fù)雜URL參數(shù)的精準(zhǔn)覆蓋。
頭條搜索Robots協(xié)議通過(guò)路徑與參數(shù)的雙模塊匹配設(shè)計(jì),結(jié)合通配符的靈活應(yīng)用,實(shí)現(xiàn)了對(duì)URL結(jié)構(gòu)的精細(xì)化控制。其規(guī)則兼顧一致性與實(shí)用性,既遵循行業(yè)通用標(biāo)準(zhǔn),又針對(duì)復(fù)雜場(chǎng)景提供了定制化匹配能力,助力站長(zhǎng)高效配置抓取策略。