Wordpress中某個下載頁面匿名用戶只能在提交表單後訪問,方法是在頁面加載的時候檢查表單提交成功的標記是否存在,不存在就跳轉去表單頁面,這裡使用了 wp_redirect() 方法。
那麼問題來了,有的匿名用戶第一次就直接訪問了下載頁面而不是表單頁面,他就會被302跳轉去表單頁面,而這個302跳轉的記錄就會被瀏覽器緩存cached,那之後,即便他完成了表單提交,瀏覽器也會根據緩存將其跳轉至表單頁,也就是說除非清空了瀏覽器緩存,他將不能瀏覽下載頁面的內容。
解決問題的思路就是想辦法讓瀏覽器不要緩存,比如加一個no cache的標記在response header中。最後是在 wp_redirect() 前加一個 nocache_headers() 方法,順利解決。
1<?php
2nocache_headers();
3wp_redirect( home_url( 'your-url' ) );
4exit();