如果未登录,用户将被重定向到“我的帐户”页面。如果已登录,仍已重定向。缓存重定向?

我在函数中添加了代码.php如果用户尝试访问任何Woocommerce页面,则可以将用户重定向到“我的帐户”页面。


add_action( 'template_redirect', 'wc_redirect_non_logged_to_login_access');

function wc_redirect_non_logged_to_login_access() {



if ( !is_user_logged_in() && ( is_woocommerce() || is_shop() || is_cart() || is_checkout() ) ) {

    wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id')) );

    exit();

}}

一切正常 - 用户尝试访问商店页面,他们确实被重定向到我的帐户页面,登录后他们可以访问商店。


当我迁移到WP引擎时,问题就开始了。现在,如果用户访问Shop页面,被重定向到“我的帐户”,登录并尝试访问Shop - 他仍然会被重定向到“我的帐户”。


我联系了WP引擎,他们添加了下面列出的Woocommerce缓存排除项:


^/cart/

^/my-account/

^/checkout/

^/product-category/

^/product/

^/wc-api/

^/resetpassword/

product

wc-api=

woocommerce_cart_hash

woocommerce_items_in_cart

Wp_woocommerce_session_

wp-resetpass-


但问题仍然存在。


域通过Cloudflare,所以我免除了此路径的缓存。所以我为/my-account/page - 缓存级别 - 绕过页面制定了页面规则,但问题仍然存在。以下是我的页面规则:https://ibb.co/28k84cM


之后,我做了一个小实验,并添加了一个使用WP引擎托管的测试站点(https://residenceineu.wpengine.com/)。DNS不会通过Cloudflare。一切都在WP引擎上 - 托管和域。结果,问题并没有消失。因此,我认为WP引擎有故障。


以下是响应式标头信息的屏幕截图:https://ibb.co/dMwQ8t5


顺便说一句,当我在浏览器检查设置中禁用浏览器缓存时,问题消失了。


有趣的是,当代码添加到函数中时.php如果首先我们访问“我的帐户”页面(无需单击“商店”页面),然后登录,登录后我们访问“商店”页面,我们可以访问它 - 没有重定向,一切正常。当我们第一次访问Shop页面时,问题就开始了,之后被重定向到“我的帐户”,登录后,我们尝试再次访问Shop页面。


因此,总结一下 - 当我们访问“我的帐户”页面,然后转到“商店”页面时 - 没有缓存/重定向,一切正常。如果我们通过访问商店页面来执行此操作 - 重定向到我的帐户 - 登录 - 尝试访问Sho页面=再次重定向到我的帐户,即使已登录也是如此。因此,考虑到所有这些因素,如果我们在没有登录的情况下先访问Shop页面,则似乎整个重定向过程都会被缓存。


我正在与WP引擎支持部门联系,但我们仍然没有解决方案。


有什么想法吗?也许在迁移到WP引擎后,他们会自动在wp-config.php或.htaccess文件中重写一些东西?


动漫人物
浏览 281回答 1
1回答

守候你守候我

WP引擎特别从缓存中排除了/shop/路径。这解决了这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP