You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac下如何配置/etc/hosts将子文件夹当作根目录访问?

解决Apache多站点根目录映射问题

/etc/hosts仅能实现域名到IP的映射,无法直接将子路径设为站点根目录。要实现你的需求,最可靠的方案是配置Apache虚拟主机,也可通过.htaccess重写规则快速处理,具体步骤如下:

方法一:配置虚拟主机(推荐)

这是管理多站点的标准方式,每个站点拥有独立域名与根目录:

  1. 启用虚拟主机模块
    打开Homebrew安装的Apache主配置文件(Intel芯片路径为/usr/local/etc/httpd/httpd.conf,M系列芯片为/opt/homebrew/etc/httpd/httpd.conf),找到以下两行并移除开头的#注释:
#LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias_module.so
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf

注意第二行路径需与你的实际安装路径匹配。

  1. 编写虚拟主机配置
    打开虚拟主机配置文件/usr/local/etc/httpd/extra/httpd-vhosts.conf,添加以下内容(替换你的用户名为系统实际用户名):
<VirtualHost *:80>
    ServerName site1.local
    DocumentRoot "/Users/你的用户名/Sites/site1"
    <Directory "/Users/你的用户名/Sites/site1">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName site2.local
    DocumentRoot "/Users/你的用户名/Sites/site2"
    <Directory "/Users/你的用户名/Sites/site2">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. 绑定本地域名
    编辑/etc/hosts文件,添加以下内容,将自定义域名指向本地IP:
127.0.0.1 site1.local
127.0.0.1 site2.local
::1 site1.local
::1 site2.local
  1. 重启Apache生效
    执行命令重启Apache服务:
brew services restart httpd

之后访问site1.local直接对应site1的根目录,site2.local对应site2的根目录,站点内的相对路径都会基于各自目录解析。

方法二:使用.htaccess重写规则(临时快速方案)

若不想修改Apache主配置,可在每个站点目录下创建.htaccess文件重写路径:

在site1目录下创建.htaccess,添加以下内容:

RewriteEngine On
RewriteBase /site1/
RewriteCond %{REQUEST_URI} !^/site1/
RewriteRule ^(.*)$ /site1/$1 [L,R=301]

同理在site2目录下创建.htaccess,将RewriteBase和规则中的site1替换为site2。该方式会将指向根目录的请求重定向到子路径,让站点识别自身目录为根。

注意:使用此方法需确保Apache主配置中对应Sites目录的<Directory>块开启了AllowOverride All,否则.htaccess规则不会生效。

内容的提问来源于stack exchange,提问作者JessycaFrederick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:05:19