在服务器端检测请求的页面是否为PWA

时间:2021-03-29 作者:DaftPlug

我试图确定用户是否正在服务器端浏览PWA。在客户端,我可以检查浏览器模式是否为standalone 通过JavaScript和detect PWA,但在服务器端,这不是一个选项。所以我使用了简单的查询参数。清单中的起始URL具有查询参数isPwa 每次用户打开PWA时,它都会转到https://example.com/?isPwa. 我现在需要的是在用户浏览PWA时保留该参数,所以我需要设置isPwa 参数设置为用户打开的下一个URL(如果referer URL已具有)isPwa 参数,但我的代码转到重定向循环,我无法确定导致此情况的原因。这是我的代码:

function addIsPwaQueryArg() {
    $referer = wp_get_referer();
    if (strpos($referer, \'isPwa\') !== false) {
        $location = remove_query_arg(\'isPwa\');
        wp_redirect(add_query_arg(\'isPwa\', \'\', $location));
        exit;
    }
}
add_action(\'template_redirect\', \'addIsPwaQueryArg\');
有人能告诉我我的代码出了什么问题,为什么不起作用?

谢谢

1 个回复
SO网友:Pat J

您没有将实际的查询字符串传递给remove_query_arg(). 经过一些快速测试,我认为$location 值可能是一个空字符串,您尝试重定向到的位置是?isPwa.

第二个参数为remove_query_arg() 应该是$referer 价值

function addIsPwaQueryArg() {
    $referer = wp_get_referer();
    if (strpos($referer, \'isPwa\') !== false) {
        $location = remove_query_arg(\'isPwa\', $referer );
        wp_redirect(add_query_arg(\'isPwa\', \'\', $location));
        exit;
    }
}
add_action(\'template_redirect\', \'addIsPwaQueryArg\');
However: 我不确定这是重定向循环的根本原因。看起来你在检查isPwa 在查询字符串中,如果是,则将其删除,然后在重定向时将其添加回(使用空白值)。这是你的意图吗?

相关推荐