偽404兼容huawei生效顯示404

根據上述思考,以下是詳細的中文分步說明:

---

**步驟 1:獲取目標設備的User-Agent信息**

首先,我們需要收集目標設備的User-Agent字符串,包括:

1. **iPhone設備的User-Agent**:
? ?```
? ?Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1
? ?```

2. **安卓設備的User-Agent**:
? ?```
? ?Mozilla/5.0 (Linux; Android 11; Mobile) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36
? ?```

3. **華為鴻蒙設備的User-Agent**:
? ?```
? ?Mozilla/5.0 (Huawei; HWA-AL00; HMA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36
? ?```

**步驟 2:分析User-Agent字符串的特征**

從上述示例中,我們可以總結出不同設備的User-Agent特征:

- **iPhone**:包含“iPhone”關鍵字。
- **安卓設備**:包含“Android”關鍵字。
- **華為鴻蒙**:包含“Huawei”或“HMA”關鍵字。

**步驟 3:修改偽404設置以包括所有目標設備**

根據偽404的實現方式,分別進行以下修改:

* **修改Apache服務器配置(.htaccess文件)**

? 假設當前的偽404設置如下:
? ```
? RewriteEngine On
? RewriteCond %{HTTP_USER_AGENT} "iPhone|Android" [NC]
? RewriteRule ^ - [L]
? ```

? 修改后的設置應包括所有目標設備:
? ```
? RewriteEngine On
? RewriteCond %{HTTP_USER_AGENT} "iPhone|Android|Huawei|HMA" [NC]
? RewriteRule ^ - [L]
? ```

? 這意味著,當User-Agent包含“iPhone”、“Android”、“Huawei”或“HMA”時,會觸發偽404規則。

* **修改Nginx服務器配置**

? 如果使用Nginx,假設當前配置如下:
? ```
? location / {
? ? ? if ($http_user_agent ~* "iPhone|Android") {
? ? ? ? ? return 404;
? ? ? }
? ? ? # 其他配置
? }
? ```

? 修改后的配置應包括所有目標設備:
? ```
? location / {
? ? ? if ($http_user_agent ~* "iPhone|Android|Huawei|HMA") {
? ? ? ? ? return 404;
? ? ? }
? ? ? # 其他配置
? }
? ```

? 這樣,當User-Agent包含“iPhone”、“Android”、“Huawei”或“HMA”時,會返回404狀態。

* **修改服務器端腳本(以PHP為例)**

? 如果偽404是通過服務器端腳本實現的,例如:
? ```php
? if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false) {
? ? ? header('HTTP/1.1 404 Not Found');
? ? ? // 展示404頁面
? }
? ```

? 修改后的條件判斷應包括所有目標設備:
? ```php
? $user_agent = $_SERVER['HTTP_USER_AGENT'];
? if (strpos($user_agent, 'iPhone') !== false || strpos($user_agent, 'Android') !== false || strpos($user_agent, 'Huawei') !== false || strpos($user_agent, 'HMA') !== false) {
? ? ? header('HTTP/1.1 404 Not Found');
? ? ? // 展示404頁面
? }
? ```

**步驟 4:測試和驗證修改后的偽404設置**

為了確保修改生效,需要進行全面的測試:

1. **多設備測試**:
? ?- **使用iPhone或安卓設備**訪問鏈接,確認顯示偽404頁面。
? ?- **使用華為鴻蒙設備**訪問鏈接,確認也顯示偽404頁面。

2. **模擬User-Agent測試**:
? ?- 使用瀏覽器擴展或工具(如User-Agent Switcher)模擬不同設備的User-Agent,包括華為鴻蒙設備的User-Agent。
? ?- 確認模擬的User-Agent能夠正確觸發偽404規則。

3. **查看服務器日志**:
? ?- 檢查服務器日志,確認來自所有目標設備的請求都被正確歸類為偽404。
? ?- 確認沒有其他設備誤判為偽404。

**步驟 5:持續監控和優化**

完成修改后,應持續監控偽404設置的表現:

1. **用戶反饋**:
? ?- 收集用戶的反饋,確認所有目標設備用戶都能看到偽404頁面。

2. **日志分析**:
? ?- 定期分析服務器日志,確保所有目標設備都被正確處理,沒有遺漏或誤判的情況。

3. **更新規則**:
? ?- 隨著設備的更新或新設備的發布,可能需要更新User-Agent判斷規則,確保兼容性。

通過以上步驟,可以有效地調整偽404設置,使其在所有目標設備(包括iPhone、安卓設備和華為鴻蒙設備)上正確顯示偽404頁面,確保所有用戶都能獲得一致的訪問體驗。

添加對華為系統的檢測并觸發偽404頁面的詳細步驟說明:

### 步驟 1:檢測華為系統

在現有的移動設備檢測邏輯中,添加對華為系統的檢測。華為設備通常會在用戶代理字符串中包含“Huawei”或“HONOR”。我們可以修改`andsystem`變量的定義,加入這些關鍵詞的檢測。

修改后的代碼如下:

```javascript
var andsystem = /Android|Linux|Huawei|HONOR/.test(uagent) ? true : false;
```

### 步驟 2:添加華為系統的關鍵詞檢測

在關鍵詞檢測部分,添加與華為相關的關鍵詞。例如,添加“華為系統”、“HUAWEI”、“HarmonyOS”等關鍵詞到正則表達式中。

修改后的正則表達式部分如下:

```javascript
if (/Android|webOS|iPhone|iPad|Windows Phone|iPod|BlackBerry|SymbianOS|Nokia|Mobile|華為系統|HUAWEI|HarmonyOS/.test(navigator.userAgent)) {
? ? // existing logic
}
```

### 步驟 3:在關鍵詞檢測中添加華為系統的判斷

在檢測到移動設備后,進一步判斷是否為華為系統,并在滿足條件時觸發偽404頁面。

### 步驟 4:在PC端檢測中添加華為系統的判斷

### 步驟 5:測試新增功能

在修改代碼后,進行測試以確保新增的華為系統檢測和偽404觸發功能正常工作。可以使用不同的設備和用戶代理進行測試,包括華為手機和其他設備,驗證是否在預期條件下正確觸發偽404頁面。

### 總結

代碼中添加了對華為系統的檢測,并在滿足特定條件時觸發偽404頁面。這將有助于更全面地管理不同設備和系統的訪問控制,確保網站資源的合理分配和安全性。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70419.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

github配置sshkey

使用命令生成sshkey ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 依此會要求輸入以下信息,可以使用默認值 設置保存密鑰的路徑 設置SSH密鑰密碼(備注:空內容表示不設置SSH密鑰密碼) 再次確認SSH密鑰密…

深入理解WebSocket接口:如何使用C++實現行情接口

在現代網絡應用中,實時數據傳輸變得越來越重要。通過WebSocket,我們可以建立一個持久連接,讓服務器和客戶端之間進行雙向通信。這種技術不僅可以提供更快的響應速度,還可以減少不必要的網絡流量。本文將詳細介紹如何使用C來實現We…

FFMPEG編碼容錯處理解決辦法之途徑----升級庫文件

在qt開發環境下接收網絡數據,調用ffmpeg解碼播放視頻,出現閃屏現象,具體現象可以使用操作系統自帶的ffplay播放器播放原始視頻流可復現;而使用操作系統自帶的mpv播放器播放視頻則不會出現閃屏;閃屏時會報Could not fin…

什么是超越編程(逾編程)(元編程?)

超越編程(逾編程)(元編程?)(meta-programming) 目錄 1. meta- 的詞源 2. 逾編程(meta-programming) 的直實含義 2.1 定義 2.2 說明 3. 翻譯成“元編程”應該是一種錯誤 1. meta- 的詞源 這是一個源自希臘語的構詞元素,其有三種含義&#xff…

基于Martin的全國基礎底圖實現

概述 前面有文章基于Martin實現MapboxGL自定義底圖分享了Martin的使用,本文使用網絡收集的數據實現了全國基礎數據的收集和基礎底圖。 實現后效果 實現 1. 數據準備 實例中包含如下數據: 邊界線和九段線數據省邊界面數據省會城市點數據市邊界面數據…

新版Tomcat MySQL IDEA 安裝配置過程遇到的問題

一、IDEA閃退 打不開了 IDEA環境變量路徑不對 二、Tomcat 一閃而過 主要是JDK環境變量不對 三、MySQL 重新安裝、是否備份以及默認盤問題 看清楚教程基本沒問題:Windows 安裝配置及卸載MySQL8超詳細保姆級教程_mysql8卸載-CSDN博客

鏈表_兩兩交換鏈表中的節點

鏈表_兩兩交換鏈表中的節點 一、leetcode-24二、題解1.引庫2.代碼 一、leetcode-24 兩兩交換鏈表中的節點 給你一個鏈表,兩兩交換其中相鄰的節點,并返回交換后鏈表的頭節點。你必須在不修改節點內部的值的情況下完成本題(即,只能…

DAY08 List接口、Collections接口、Set接口

學習目標 能夠說出List集合特點1.有序2.允許存儲重復的元素3.有帶索引的方法(練習 add,remove,set,get) 能夠使用集合工具類Collections類:static void sort(List<T> list) 根據元素的自然順序 對指定列表按升序進行排序。static <T> void sort(List<T> lis…

Zookeeper(58)如何在Zookeeper中實現分布式鎖?

在 Zookeeper 中實現分布式鎖是一種常見的用例。Zookeeper 提供了強一致性、高可用性的分布式協調服務&#xff0c;使得它非常適合用來實現分布式鎖。以下是詳細的步驟和代碼示例&#xff0c;展示如何在 Zookeeper 中實現分布式鎖。 1. Zookeeper 分布式鎖的基本原理 Zookeep…

帆軟報表FineReport入門:簡單報表制作[擴展|左父格|上父格]

FineReport幫助文檔 - 全面的報表使用教程和學習資料 數據庫連接 點擊號>>JDBC 選擇要連接的數據庫>>填寫信息>>點擊測試連接 數據庫SQLite是帆軟的內置數據庫, 里面有練習數據 選擇此數據庫后,點擊測試連接即可 數據庫查詢 方法一: 在左下角的模板數據集…

后臺管理系統-項目初始化

認識vue-admin **核心交付:** 為什么要基于現成架子二次開發 什么是二次開發:基于已有的代碼(項目工程,腳手架)開進行新功能的開發 所以看懂已有的框架中的既有代碼,變得很重要了 1. 背景知識 后臺管理系統是一種最常見的應用模式,不同的管理系統之間有很多相似的地方…

DAY07 Collection、Iterator、泛型、數據結構

學習目標 能夠說出集合與數組的區別數組:1.是引用數據類型的一種2.可以存儲多個元素3.數組的長度是固定的 int[] arr1 new int[10]; int[] arr2 {1,2,3};4.數組即可以存儲基本類型的數據,又可以存儲引用數據類型的數據int[],double[],String[],Student[]集合:1.是引用數據類…

VLM(視覺語言模型)與DeepSeek R1(獎勵機制)如何結合

VLM&#xff08;視覺語言模型&#xff09;與DeepSeek R1&#xff08;獎勵機制&#xff09;如何結合 flyfish VLM的傳統訓練依賴于監督學習&#xff08;直接擬合問答對&#xff09;&#xff0c;而規則獎勵函數通常用于強化學習&#xff08;通過試錯和獎勵反饋優化策略&#xf…

從零開始構建一個語言模型中vocab_size(詞匯表大小)的設定規則

從零開始構建一個語言模型就要設計一個模型框架,其中要配置很多參數。在自然語言處理任務中,vocab_size(詞匯表大小) 的設定是模型設計的關鍵參數之一,它直接影響模型的輸入輸出結構、計算效率和內存消耗。 本文是在我前文的基礎上講解的:從零開始構建一個小型字符級語言…

計算機網絡之物理層——基于《計算機網絡》謝希仁第八版

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言&#xff0c;數據結構&#xff0c;Linux基礎&#xff0c;ARM開發板&#xff0c;網絡編程等領域UP&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff0…

實時股票行情接口與WebSocket行情接口的應用

實時股票行情接口與WebSocket行情接口的應用 實時股票行情接口是量化交易和投資決策的核心工具之一&#xff0c;行情接口的種類和功能也在不斷擴展。介紹幾種常見的行情接口&#xff0c;包括實時股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口&#xff0c;…

圖論 之 BFS

文章目錄 3243.新增道路查詢后的最短距離1311.獲取你好友已觀看的視頻 BFS:廣度優先搜索&#xff08;BFS&#xff09; 是一種常用的算法&#xff0c;通常用于解決圖或樹的遍歷問題&#xff0c;尤其是尋找最短路徑或層級遍歷的場景。BFS 的核心思想是使用隊列&#xff08;FIFO 數…

ollama stream“:True django如何返回數據

在使用 Django 框架開發 Web 應用時&#xff0c;如果你想要通過 Ollama 流式返回數據&#xff0c;你可以通過 Django 的 HttpResponse 或者 StreamingHttpResponse 來實現。Ollama 主要用于處理文本生成任務&#xff0c;如聊天機器人、自動完成等&#xff0c;通常這些任務會產生…

為什么要用 const 和 let,而不是 var?

JavaScript 中有三種方式聲明變量&#xff1a;var、let 和 const。其中&#xff0c;var 是早期版本的 JavaScript 中的標準&#xff0c;但隨著 ECMAScript 6&#xff08;ES6&#xff09;引入了 let 和 const&#xff0c;var 的種種問題也顯現出來。今天&#xff0c;我們將探討為…

從零開始玩轉TensorFlow:小明的機器學習故事 2

你好&#xff0c;TensorFlow&#xff01;——從零開始的第一個機器學習程序 1. 為什么要寫這個“Hello, TensorFlow!”&#xff1f; 無論學習什么新語言或新框架&#xff0c;“Hello World!”示例都能幫助我們快速確認開發環境是否就緒&#xff0c;并掌握最基本的使用方式。對…