phpenv中伪静态需按服务器类型配置:apache需启用mod_rewrite并设allowoverride all及.htaccess规则;nginx需在server块中配置rewrite指令;php内置服务器则用router.php脚本拦截路由。

如果您在使用phpEnv本地开发环境时发现URL无法以伪静态形式访问,例如访问 /article/123 时返回404而非由PHP脚本处理,则说明伪静态模块未启用或规则未正确配置。以下是针对phpEnv中Apache与Nginx两种内置服务器的独立配置方法:
一、Apache环境下启用mod_rewrite并配置.htaccess
phpEnv默认集成Apache,但其mod_rewrite模块常处于禁用状态,且.htaccess文件默认不生效,需手动开启权限并部署重写规则。
1、打开phpEnv安装目录下的Apache配置文件httpd.conf(路径通常为phpEnv\Apache\conf\httpd.conf)。
2、搜索#LoadModule rewrite_module modules/mod_rewrite.so,删除行首的#符号以启用模块。
3、继续搜索<directory>,定位到对应网站根目录(如<code>"D:/phpEnv/www")的<directory></directory>区块,将其中的AllowOverride None修改为AllowOverride All。
4、保存httpd.conf后,在phpEnv控制面板中点击“重启Apache”服务。
5、在项目根目录(如D:/phpEnv/www/myproject/)新建文件,命名为.htaccess(注意开头为英文点号,无扩展名)。
6、向.htaccess中写入标准重写规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
二、Nginx环境下在server块中配置rewrite指令
phpEnv中的Nginx版本默认不加载自定义伪静态规则,需直接编辑站点对应的Nginx虚拟主机配置文件,通过location与rewrite指令实现路径转发。
1、打开phpEnv安装目录下的Nginx配置路径(通常为phpEnv\Nginx\conf\vhost\),找到当前启用站点的配置文件(如default.conf或localhost.conf)。
2、在server { }块内,定位到location / { }区块,将其内容替换为以下结构:
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=$1 last;
}
}
3、确保该server块中已存在PHP处理段,例如:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
4、保存配置文件后,在phpEnv控制面板中点击“重启Nginx”服务。
5、验证配置语法是否正确:可在命令行进入phpEnv\Nginx\目录,执行nginx -t;若提示successful则表示无误。
三、PHP内置开发服务器模拟伪静态路由
当使用phpEnv的“PHP内置服务器”模式(非Apache/Nginx)启动项目时,无法原生支持重写,但可通过指定路由器脚本统一拦截所有请求路径,并交由PHP逻辑解析,实现行为等效的伪静态效果。
1、在项目根目录创建文件router.php,内容如下:
if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js|woff2|ttf|svg|ico|map)$/i', $_SERVER['REQUEST_URI'])) {
return false;
} else {
include __DIR__ . '/index.php';
}
2、在phpEnv控制面板中选择“PHP内置服务器”,设置端口(如8000),并在“路由器脚本”字段中填入router.php的相对路径(如./router.php)。
3、启动服务后,访问http://localhost:8000/user/123时,$_SERVER['REQUEST_URI']将保留原始路径值,供index.php解析使用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











