本文目錄
頁面能開啟,圖片或登入卻失敗時,要找到失敗請求的實際網域,別只替網址列的網址加規則。要讓修改生效,還得看規則的位置、使用的策略是否存在,以及訂閱更新是否會覆蓋它。少量自訂規則可以直接寫,需要持續更新的大型清單再用規則集管理。
網站只有部分內容失敗,規則應匹配哪個網域?
一個頁面可能分別請求主網域、登入網域、圖片 CDN 和 API。規則匹配的是實際連線中的網域、IP 或處理程序,位址欄中的網址不一定包含失敗的資源。
保持 Rule 模式,在 Connections 找到剛才失敗的請求;需要代理時,固定一個確認可用的節點。比較目前策略與預期策略,只修改這個請求需要的規則,再重新發起請求。預期直連時不需要選擇代理節點。
修改規則需要的連線資訊
- 失敗連線的完整網域或目標 IP
- 目前顯示的規則類型與規則內容
- 最終使用的策略群組或 DIRECT
- 這條連線實際應該去的策略
規則順序:具體條件放在寬規則之前
Mihomo 從上到下檢查規則,命中第一條就停止。具體條件通常位於更寬規則之前。
以下使用 api.example.com 說明規則順序,這個佔位網域不能用於驗證實際業務。套用到既有 Profile 時,換成 Connections 記錄的真實網域,並使用該設定已有的目標群組;群組名稱引用必須完全一致,需要代理時才在群組內選中可用節點。預期直連時才使用 DIRECT。
proxy-groups:
- name: 代理选择
type: select
include-all: true
proxies:
- DIRECT
rules:
- DOMAIN,api.example.com,代理选择
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,代理选择套用到自己的設定後,儲存並重新載入,關閉修改前的舊連線,再重新請求實際目標。在 Connections 核對真實網域、新命中規則與最終出口;仍是舊結果時,檢查連線重用,以及目前 Profile 是否載入本次修改。
在 Clash Verge Rev 新增規則,再檢查更新後是否保留
直接修改遠端訂閱檔案,下次更新可能覆蓋修改。要保留自訂規則,可使用用戶端的規則覆寫功能,在載入訂閱時加入自己的規則。
以下步驟以 Clash Verge Rev 為例:以右鍵點選目前訂閱卡片,進入「編輯規則」。新增規則放在「前置規則」,位於訂閱原有的寬泛規則與 MATCH 之前;其他用戶端依自己的文件操作。
讓自訂規則立即生效,且訂閱更新後仍保留
記錄實際請求與目標
在 Connections 取得失敗請求的網域和目前命中規則,確認希望直連還是使用既有策略群組。
確認目標策略可用
使用目前 Profile 已有的群組名稱;需要代理時在群組內選中可用節點,不能只看到群組名稱就認定已經走代理。
新增一條前置規則
在 Clash Verge Rev 中右鍵點擊目前訂閱,開啟「編輯規則」並新增一項。按完整網域匹配時,類型選 DOMAIN,填入 Connections 記錄的網域,策略選既有群組或 DIRECT,位置選「前置規則」。其他用戶端依自身文件操作,不覆蓋遠端訂閱快取。
重新載入並發起新請求
關閉修改前的舊連線,再重做同一動作,查看新命中規則與最終出口,檢查原本失敗的資源是否恢復。
更新訂閱後再檢查一次
手動更新目前訂閱,重新請求並核對同一規則、實際出口與網頁結果;失敗時停用本次新增覆寫,保留可用的原設定。
兩次請求都命中同一自訂規則,才證明「目前有效」和「更新後保留」同時成立。只在編輯器裡搜尋到文字,不能代表它已經進入 Mihomo 的執行設定。
舊教學的 prepend-rules 與目前規則編輯入口
早期教學可能用 prepend-rules 表示在訂閱規則之前加入自己的規則。下方只用於辨認這種寫法;目前入口與欄位限制請看提示。
prepend-rules:
- DOMAIN,api.example.com,DIRECT
- DOMAIN-SUFFIX,intranet.example,DIRECT需要持續更新的名單時,再用 rule-providers
只有幾條自訂規則時,先透過目前用戶端支援的覆寫儲存,並檢查訂閱更新後仍有效。需要專案持續維護的大型名單時,再用 rule-providers 儲存規則資料、用 RULE-SET 引用;匹配後使用哪個策略,仍由 rules 中的目標決定。
provider 只是規則資料,不會自己選擇節點。示例中的「RULE-SET,work-domains,代理选择」把匹配結果交給已經定義的「代理选择」;如果換成自己的組名,proxy-groups 和 rules 兩處必須完全一致。
proxy-groups:
- name: 代理选择
type: select
include-all: true
proxies:
- DIRECT
rule-providers:
work-domains:
type: http
behavior: domain
format: yaml
url: https://rules.example.com/work.yaml
path: ./ruleset/work.yaml
interval: 86400
rules:
- RULE-SET,work-domains,代理选择
- MATCH,代理选择behavior 與 format:名單內容、格式及組合限制
rule-provider 的 behavior
| 值 | 檔案裡放什麼 | 不適合放什麼 |
|---|---|---|
| domain | 網域、網域後綴等網域集合 | IP 網段與完整經典規則行 |
| ipcidr | IPv4 / IPv6 CIDR | DOMAIN、PROCESS-NAME 等條件 |
| classical | 帶類型和匹配條件,例如 DOMAIN-SUFFIX,...,不帶策略目標 | 只想維護純網域時會顯得冗長 |
behavior 決定名單內容,format 決定檔案格式。yaml、text 和 mrs 不能任意組合:mrs 只支援 domain、ipcidr,不支援 classical。先核對規則來源公布的 behavior、format 與實際內容;檔案下載成功,不代表組合正確或已經載入。
不要依 URL 後綴猜格式。規則來源改變格式後,用戶端仍可能保留舊快取;依日誌中的 provider 名稱與解析錯誤,確認正在載入哪份內容。
規則集下載失敗:位址、間隔、代理與快取
- type
- http 從遠端更新,file 讀取本機檔案,inline 把內容直接放在設定中。
- url
- 遠端規則源位址;401、403、404 和 timeout 應按 HTTP 結果處理。
- interval
- 更新間隔,單位為秒。過短只會增加請求,並不會讓規則更準確。
- proxy
- 指定下載規則源時使用的代理;源站本機可達時也可以按設定直連。
- path
- 快取檔案路徑。Mihomo 預設限制在 HomeDir,外部路徑需要 SAFE_PATHS。
provider 下載失敗時,舊快取可能仍被使用,所以「網站還能開啟」不代表今天更新成功。查看 provider 的本次更新時間與日誌,保留舊快取到新源恢復,不要直接刪掉所有規則檔案。
規則不生效:下載、格式、引用名與順序
provider download 401 / 403 / 404
處理遠端位址、權限或已遷移路徑,規則語法還未參與。
provider parse error
核對 behavior、format 與源檔案實際內容。
RULE-SET not found
rules 引用名與 rule-providers 鍵名不一致。
proxy group not found
規則目標組在目前訂閱中不存在或已經改名。
規則載入但總命中前一條
調整順序,讓具體規則位於寬規則和 MATCH 之前。
訂閱更新後自訂項消失
停止直接改遠端檔案,改用綁定目前 Profile 的覆寫。
新增規則後,檢查同頁其他連線
規則越多,互相遮擋的機會越大。完成目標網域的驗證後,檢查同一頁面的其他連線是否仍按預期直連或代理;若只需要三條規則,就不必引入一個包含數萬條未知來源的清單。
保留新增規則的網域、匹配條件和目標組記錄,便於節點或 Profile 改名後檢查引用。
