---
title: "Mac 上的 /etc/hosts 沒有作用：如何編輯並套用 · Kilobat 指南"
url: "https://kilobat.app/zh-hant/guides/hosts-file-not-working.html"
description: "/etc/hosts 中的項目在 Mac 上沒有作用。檢查檔案格式、清除 DNS 快取，並找出是什麼繞過了 hosts 檔案。"
---

DNS

# Mac 上 /etc/hosts 的變更沒有作用

`/etc/hosts` 檔案只在這部 Mac 上把名稱對應到 IP 位址。mDNSResponder 會讀取它，但有些 App 和設定會繞過它。

適用於：所有目前的 macOS 版本。 · 檢查日期：2026年10月29日

## 症狀

- 你在 `/etc/hosts` 加了一行，但瀏覽器仍然打開舊網站。
- 項目在「終端機」中有效，在某個 App 中卻沒有。
- `example.com` 有效，但 `www.example.com` 沒有。

## 可能原因

- **行格式錯誤。**每一行必須以 IP 位址開頭，接著是主機名稱。以 `#` 開頭的是註解。
- **缺少名稱。**這個檔案只對應完全相符的名稱。需要的每個名稱都要加上，例如 `www.example.com` 以及 `example.com`。
- **快取的回應。**macOS 或瀏覽器可能會保留舊位址一段時間。
- **代理伺服器或 App 自己的 DNS。**使用代理伺服器時，名稱由代理伺服器查詢。有些 App 也有自己的 DNS 設定。

## 如何檢查

1. 顯示檔案內容。

   ```
   cat /etc/hosts
   ```
2. 向 macOS 解析器查詢該名稱，結果必須是檔案中的位址。

   ```
   dscacheutil -q host -a name example.com
   ```
3. 顯示系統的代理伺服器設定。代理伺服器會自行查詢名稱。

   ```
   scutil --proxy
   ```

## 如何修正

1. 以管理者身分在文字編輯器中打開檔案。

   ```
   sudo nano /etc/hosts
   ```

   需要管理者密碼。
2. 每個名稱加一行。IP 位址放最前面，後面接一個或多個名稱。

   ```
   127.0.0.1   example.com www.example.com
   ```
3. 儲存檔案。在 nano 中，按 Control-O，再按 Return，然後按 Control-X。
4. 清除 DNS 快取。請參閱[清除 Mac 上的 DNS 快取](https://kilobat.app/zh-hant/guides/flush-dns-cache-mac.html)。

   ```
   sudo killall -HUP mDNSResponder
   ```

   需要管理者密碼。
5. 結束瀏覽器再重新打開。
6. 如果 App 使用代理伺服器，就不透過代理伺服器測試，或在代理伺服器上加入這個項目。

## 常見問題

**需要重新啟動 Mac 嗎？**

不需要。儲存檔案、清除 DNS 快取，再重新打開 App。

**可以使用 *.example.com 這類萬用字元嗎？**

不行。hosts 檔案的格式包含位址、正式主機名稱和別名。每個名稱都要寫在該行中。

## 資料來源

- hosts(5)，macOS 27.2 內建的 man 手冊頁
- mDNSResponder(8)，macOS 27.2 內建的 man 手冊頁
- [Apple 支援（已封存）：在 OS X 中重置 DNS 快取](https://support.apple.com/en-us/101481)
- scutil(8)，macOS 27.2 內建的 man 頁面

資料來源檢查日期：2026年10月29日。man 頁面為 macOS 內建版本；在終端機中用 `man <name>` 開啟。

## 相關指南

- [清除 Mac 上的 DNS 快取](https://kilobat.app/zh-hant/guides/flush-dns-cache-mac.html): macOS 會將 DNS 回應保留一段時間。
- [Mac 上的 DNS 無法解析](https://kilobat.app/zh-hant/guides/dns-server-not-found.html): DNS 失敗時，Mac 無法將 apple.com 這類名稱轉換成 IP 位址。
- [代理伺服器設定讓 Mac 上的 App 無法連線](https://kilobat.app/zh-hant/guides/proxy-settings-breaking-apps.html): 代理伺服器設定會讓流量經由另一台伺服器傳送。
- [Mac 上的連接埠已被占用](https://kilobat.app/zh-hant/guides/port-already-in-use.html): 同一個 TCP 連接埠和位址只能有一個處理程序在監聽。
