thinkphp6.0强制要求将public目录设为web根目录,apache配置中documentroot和directory路径必须指向public,启用mod_rewrite并设置allowoverride all,nginx需用try_files或rewrite规则隐藏index.php,同时正确配置hosts绑定域名并重启服务。

ThinkPHP6.0 必须把 public 目录设为 Web 服务器的根目录,否则会暴露 app、config 等敏感目录,且路由和静态资源必然 404 —— 这不是可选项,是强制前提。
Apache 虚拟主机配置要点(httpd-vhosts.conf)
直接在 httpd-vhosts.conf 里加一段,关键不是写对语法,而是路径和权限别出错:
-
DocumentRoot必须指向你的 TP6 项目下的public目录,比如"D:/www/mytp6/public",不能是项目根目录 -
<directory></directory>的路径要和DocumentRoot完全一致,且必须包含AllowOverride All(否则.htaccess不生效) - 确保
mod_rewrite已启用:检查httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so未被注释 - 如果用 PHPStudy/XAMPP 等集成环境,改的是它自带的 vhost 配置文件,不是系统 Apache 的默认路径
Nginx 隐藏 index.php 的正确写法(server 块内)
TP6 的 URL 路由依赖重写,Nginx 没有 .htaccess,必须手动配 try_files 或 rewrite:
- 推荐用
try_files方式,更安全稳定:location / {<br> try_files $uri $uri/ /index.php?s=$uri&$args;<br>} - 若用
rewrite,注意末尾是last不是break,否则子请求不进 PHP:rewrite ^(.*)$ /index.php?s=$1 last; -
root指令必须指向public目录上级(如/var/www/mytp6),然后靠location内的index.php路径补全,不能把root直接设成public
本地 hosts 绑定与域名解析(C:\Windows\System32\drivers\etc\hosts 或 /etc/hosts)
浏览器输域名能访问的前提,是系统能把它解析到 127.0.0.1:
- 在 hosts 文件末尾追加一行,格式严格为:
127.0.0.1 myapp.test(中间是 Tab 或空格,不能有多余字符) - 域名不能带端口(如
myapp.test:8080无效),也不能用下划线(my_app.test在部分系统会被忽略) - 修改后无需重启系统,但浏览器 DNS 缓存可能残留,可执行
ipconfig /flushdns(Windows)或sudo dscacheutil -flushcache(macOS) - 如果用了多应用模式并绑定子域名(如
admin.myapp.test),每个子域名都要单独加一行
最常被跳过的一步:改完所有配置后,必须重启 Web 服务(apache restart 或 nginx -s reload),而不是只刷新浏览器。很多“配置好了却打不开”的问题,其实卡在这一步。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











