我想阻止搜索引擎使用某些特定的獲取引數進行索引。
例子:
https://www.example.com/mypage.php應該被索引https://www.example.com/mypage.php?myparam=1不應該被索引
盡管在標題中發送了無索引,但我有許多頁面(超過 10k)帶有在主頁頂部編制索引的 get 引數。
我在 robots.txt 中有這個:
Disallow: /*?*myparam=
這在 html 中:
<meta name="robots" content="noindex" />
所有頁面也都有一個參考主頁的規范(沒有獲取引數)
我想嘗試以下方法,但如果我做錯了可能會產生災難性后果,我想檢查我的方法是否可行:
<FilesMatch "\.php">
<If "%{QUERY_STRING} =~ /myparam/">
Header set X-Robots-Tag "noindex, noarchive"
</If>
</Files>
這種方法可以嗎?還是你看到更好的?
uj5u.com熱心網友回復:
我在 robots.txt 中有這個:
Disallow: /*?*myparam=
那就是問題所在。
robots.txt防止搜索引擎機器人抓取您的網站。如果這些頁面被鏈接到,這并不一定會阻止這些頁面被編入索引。
如果您阻止抓取,那么搜索引擎機器人將不會在 HTML 或X-Robots-TagHTTP 回應標頭中看到元機器人標記,因為該頁面從未被請求過。
(盡管您通常會在搜索結果中收到通知,并帶有搜索說明,如“由于此站點的 robots.txt,此結果的說明不可用 - 了解更多”。)
因此,您應該洗掉robots.txt檔案中的條目。
但是,還有一個問題是您如何確定頁面被索引以及這是否真的是一個問題。例如,如果您正在使用site:搜索,那么這通常會回傳在自然搜索中通常不會回傳的 URL。robots.txt在自然搜索結果中回傳被阻止的 URL 是不尋常的,因為該頁面的“內容”沒有被編入索引 - 只是 URL。通常,site:搜索是挖掘這些僅 URL 的“索引”URL 的唯一方法。
所有頁面也都有一個參考主頁的規范(沒有獲取引數)
如果 URL 的非引數版本是真正的規范版本(即不是完全不同的頁面),這本身就足夠了,并且是首選選項。
“規范”標簽(如果受到尊重)將有效地將鏈接汁傳遞給規范 URL。
但是,規范標簽只是“建議”。如果 Google 確定規范 URL 不是真正規范的(例如,如果它足夠不同),則將其忽略。
您還可以在 GSC 中決議 URL 引數規范化。
<FilesMatch "\.php"> <If "%{QUERY_STRING} =~ /myparam/"> Header set X-Robots-Tag "noindex, noarchive" </If> </Files>
更新:結束的“標簽”應該是</FilesMatch>,而不是</Files>。或者,改用非正則運算式<Files ".php">指令(首選)。
否則,這是“好的”,但它可能會捕獲太多。它將X-Robots-Tag在映射到包含 .php檔案的任何請求上設定標頭- 不僅僅是檔案擴展名(即使請求的 URL 本身不是.php檔案),并且該請求包含myparam查詢字串中任何位置的字串(有點一般,因為它也會匹配abcmyparamxyz=1- 如果有可能的話)。
您可以更具體并避免該<FilesMatch>指令。例如:
<If "%{REQUEST_URI} == '/mypage.php' && %{QUERY_STRING} =~ /(^|&)myparam=/">
Header set X-Robots-Tag "noindex, noarchive"
</If>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529360.html
