在phpEnv集成环境中运行ThinkPHP6项目时,如果没有配置伪静态,访问非首页路由通常会出现404错误。ThinkPHP6采用单一入口设计,所有请求都应通过public/index.php转发。我们需要在phpEnv的站点设置中为对应站点添加重写规则,让Web服务器自动隐藏入口文件。

一、确认phpEnv站点与运行环境
首先在phpEnv中创建站点,将根目录指向ThinkPHP6项目的public文件夹。例如站点域名为tp6.local,根目录为 D:/www/tp6/public。确认Apache或Nginx其中一个服务已启动,并切换为对应版本。
二、Apache下配置伪静态
如果phpEnv使用Apache,ThinkPHP6官方已提供.htaccess文件。若站点根目录没有该文件,可手动在public下创建,内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
在phpEnv的站点管理面板中,确保已开启Apache的rewrite模块。一般phpEnv默认开启,如访问仍404,可重启Apache服务。
三、Nginx下配置伪静态
若使用Nginx,需要在phpEnv的站点配置中找到伪静态设置,填入以下规则:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
也可直接在Nginx的server块中添加上述location段。保存后重载Nginx配置,访问 tp6.local/admin 即可正常路由到对应控制器。
四、ThinkPHP6路由验证
在route/app.php中定义测试路由:
<?php
use thinkfacadeRoute;
Route::get('hello/:name', function ($name) {
return 'Hello, ' . $name;
});
配置完成后访问 tp6.local/hello/world,页面输出 Hello, world 表示伪静态生效。
五、常见问题
- 入口文件仍在URL中:检查规则是否放在public目录层级,Nginx根目录应设到public。
- Apache报500错误:确认mod_rewrite模块加载,且.htaccess语法正确。
- phpEnv修改后不生效:点击对应服务的重启按钮,不要仅刷新浏览器。
通过上述步骤,你可以在phpEnv中轻松完成ThinkPHP6的伪静态配置,获得更干净的URL结构并避免路由访问异常。