gpt4 book ai didi

mobile - Varnish 正在为谷歌移动测试仪渲染桌面站点

转载 作者:行者123 更新时间:2023-12-03 17:46:24 28 4
gpt4 key购买 nike

我正在使用 Varnish 缓存我的网站的移动版和桌面版,然后使用 https://github.com/varnishcache/varnish-devicedetect 根据用户代理字符串显示正确的版本。 .但是当使用 https://www.google.com/webmasters/tools/mobile-friendly/ 测试网站时我得到了桌面网站。 fork varnish-devicedetect 并添加谷歌在访问网站时使用的用户代理是否有意义?还是有其他更好的解决方案?

我知道如果网站能够响应,那将不是问题,但现在这不是一个选择。

最佳答案

使用这个:

(来自 https://github.com/varnishcache/varnish-devicedetect 的子集)

sub detectbot {
unset req.http.X-Bot-Detected;

# mobile bots
if (req.http.User-Agent ~ "\(compatible; Googlebot-Mobile/2.1; \+http://www.google.com/bot.html\)"
|| (req.http.User-Agent ~ "iPhone" && req.http.User-Agent ~ "\(compatible; Googlebot/2.1; \+http://www.google.com/bot.html")) {
set req.http.X-Bot-Detected = "mobile-bot";
}
# other bots
elsif (req.http.User-Agent ~ "(?i)(ads|google|bing|msn|yandex|baidu|ro|career|seznam|)bot"
|| req.http.User-Agent ~ "(?i)(baidu|jike|symantec)spider"
|| req.http.User-Agent ~ "(?i)scanner"
|| req.http.User-Agent ~ "(?i)(web)crawler") {
set req.http.X-Bot-Detected = "bot";
}
}

将其保存为detect-bot.vcl(与您的 Varnish default.vcl在同一目录中)
然后在你的 default.vcl 的顶部
include "detect-bot.vcl";

然后在您的 .vcl 中添加以下部分
backend mobile {
.host = "10.0.0.1";
.port = "80";
}

sub vcl_recv {
# add a header "X-Bot-Detected" when this request was done by a bot
call detectbot;
}

sub vcl_recv {
# call some detection engine
if (req.http.X-UA-Device ~ "^mobile-bot" ) {
set req.backend = mobile;
}
}
sub vcl_hash {
if (req.http.X-UA-Device) {
hash_data(req.http.X-UA-Device);
}
}

此示例将请求发送到另一个后端。根据您的设置如何工作,您需要调整最后一部分。见 https://www.varnish-cache.org/docs/4.1/users-guide/devicedetection.html更多示例

关于mobile - Varnish 正在为谷歌移动测试仪渲染桌面站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com