ガイドChromeは、ユーザーがサイトをクリックする可能性があると思われるリンクをプリフェッチするために ですが、逆もできますか? Chrome(または実際にはanyブラウザー)にサイトをプリフェッチおよびプリレンダリングしないように指示できますか?
現在表示されているページからリンクをプリフェッチしてはいけないことをブラウザに伝えるタグやその他の方法はありますか?
ChromeおよびSafariは、Webコンテンツのプリフェッチ/レンダリング時にX-Purpose: preview
HTTPヘッダーを送信します。 [ ソース ]
FirefoxはX-moz: prefetch
という同様のヘッダーを送信します。 [ ソース ]
プリフェッチをブロックするには、Peter Freitagが このブログ投稿 で提案したように、そのようなヘッダーが検出されたときに404応答を返すことができます。 Firefoxのプリフェッチをブロックするには、次の行を.htaccess
に追加することをお勧めします。
RewriteEngine On
SetEnvIf X-moz prefetch HAS_X-moz
RewriteCond %{ENV:HAS_X-moz} prefetch
RewriteRule .* /prefetch-attempt [L]
これを拡張して、Firefox、Safari、およびChromeプリフェッチをブロックすることができます(テストされていませんが、動作するはずです):
RewriteEngine On
SetEnvIf X-moz prefetch HAS_preview
SetEnvIf X-Purpose preview HAS_preview
RewriteCond %{ENV:HAS_preview} .
RewriteRule .* /prefetch-attempt [L]
Google Chromeは、リクエストの事前レンダリングに特別なヘッダーを送信しなくなりました。見る:
上記の答えは私にはうまくいきませんでした。しかし、うまくいったのはこれでした:
RewriteEngine On
SetEnvIfNoCase X-Forwarded-For .+ proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes
# block pre-fetch requests with X-moz headers
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]
From: askapache.com
[F]フラグは、403 Forbiddenステータスコードをブラウザに返します。[L]は、ルールが最後に処理されるルールであることを示します。
また、chromeはもはやリンクをプリフェッチしないようです(少なくとも、prev/nextメタタグの場合)。