如何在局域网内发布带虚拟域名的Laravel项目?
解决Laravel项目局域网访问问题
看起来你已经搞定了本地虚拟主机的基础配置,但要让局域网其他设备也能访问,得调整几个关键设置,我一步步给你捋清楚:
1. 确保Apache监听所有网络接口
首先,Apache默认可能只绑定了本地回环地址(127.0.0.1),这会导致局域网设备无法连接到你的服务。你需要修改httpd.conf文件:
- 找到
Listen指令,如果是Listen 127.0.0.1:80,改成Listen 80,这样Apache会监听电脑上所有可用的网络接口。
2. 更新虚拟主机的权限配置(适配Apache 2.4+)
你当前用的Order allow,deny和Allow from all是Apache 2.2的旧语法,在2.4及以上版本推荐用新的权限规则,避免潜在的访问限制问题:
打开httpd.vhosts.conf,把<Directory>块修改成这样:
<Directory "C:/xampp/htdocs/smarts/public"> DirectoryIndex index.php AllowOverride All Require all granted </Directory>
保持<VirtualHost *:80>不变,这个配置会让虚拟主机响应所有接口的80端口请求。
3. 获取你的电脑局域网IP
局域网设备需要通过你的电脑IP来访问项目,先找到这个IP:
- Windows:打开命令提示符,输入
ipconfig,找到对应网络(有线/Wi-Fi)的IPv4地址,比如192.168.3.105。 - macOS/Linux:打开终端,输入
ifconfig(Linux可能用ip addr),找到网络接口的inet地址。
4. 让局域网设备访问项目的两种方式
方式一:直接通过IP访问
- 先修改Laravel项目根目录下的
.env文件,把APP_URL改成你的局域网IP,比如:APP_URL=http://192.168.3.105 - 重启Apache服务后,局域网内的其他设备在浏览器输入
http://你的局域网IP(比如http://192.168.3.105)就能访问项目了。
方式二:通过域名smarts.local访问
如果想保留域名访问的习惯,需要让局域网内的每台设备修改它们的hosts文件:
- Windows设备:打开
C:\Windows\System32\drivers\etc\hosts(需要管理员权限),添加一行:你的局域网IP smarts.local - macOS/Linux设备:打开
/etc/hosts(需要sudo权限),添加同样的内容。 - 完成后,其他设备在浏览器输入
http://smarts.local就能访问,你的.env里APP_URL保持http://smarts.local即可。
5. 检查防火墙设置
别漏了防火墙的问题!如果你的电脑开启了防火墙,需要允许Apache的80端口入站连接:
- Windows:打开Windows Defender防火墙,进入“高级设置”,添加一条允许80端口(TCP)入站的规则,或者直接允许
httpd.exe通过防火墙。 - macOS/Linux:检查系统防火墙配置,确保80端口对外开放。
最后,重启Apache服务让所有配置生效,这样局域网内的设备就能正常访问你的Laravel项目啦!
内容的提问来源于stack exchange,提问作者Smartappc Kwt
相关产品推荐
相关产品推荐

