[紀錄] 使用PHP判斷WordPress有沒有登入來決定要不要301 Redirect

情境:

之前有寫過一篇透過Jquey來判斷使用者有沒有登入來決定要不要進行跳轉

希望可以從 /login/ -> /orders/

但是後來發現這樣會有些問題, 對於SEO是不太友善的,因為SEO判斷HTTP Status Code 是從後端接收

ex: 2xx代表成功, 301代表跳轉

如果使用Jquery的方式進行跳轉, HTTP Status Code 判斷都會是200

另一個問題是在視覺上會有延遲, 在跳轉過去的時間差使用者還是可以感受到中間藏著一個頁面 , 下圖的gif圖是實際狀況

 

 

 

思考流程:

1.判斷網址目錄是否為 /login/

2.判斷是否登入狀態

3.進行跳轉到指定網址

ob_start();
if ($_SERVER['REQUEST_URI'] == '/login/') {
  if(is_user_logged_in()){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location:https://example.com/my-account/orders/");
    exit();
  }
} 
ob_end_flush();

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *