phpenv中伪静态需先启用mod_rewrite并设allowoverride all,再按项目类型配置.htaccess或站点级apache规则,支持通用php、thinkphp、laravel及免.htaccess方式。

如果您在 phpEnv 环境中部署 PHP 网站,但访问如 /article/123 这类无 .php 后缀的 URL 时返回 404,说明伪静态尚未生效。phpEnv 基于 Apache 架构,默认未启用重写模块且未开放 .htaccess 权限,需手动配置。以下是多种兼容 phpEnv 的伪静态设置方法:
一、启用 Apache mod_rewrite 并配置 AllowOverride
该步骤是所有基于 .htaccess 的伪静态方案的前提,确保 Apache 能识别并执行重写规则。phpEnv 的 Apache 配置位于其安装目录下的 Apache\conf\httpd.conf 文件中,必须完成以下修改才能使后续规则生效。
1、用文本编辑器打开 phpEnv\Apache\conf\httpd.conf 文件。
2、搜索 LoadModule rewrite_module,找到该行并取消注释(删除行首的 #)。
3、搜索
4、保存文件,点击 phpEnv 控制面板中的 重启 Apache 按钮使配置生效。
二、为通用 PHP 项目配置基础 .htaccess 规则
适用于自定义路由或简单单入口应用(如手写 MVC 入口),该规则将所有非真实文件/目录的请求统一转发至 index.php,并保留原始路径作为参数,便于 PHP 层解析。
1、在网站根目录(例如 phpEnv\www\myproject\)新建文件,命名为 .htaccess(注意开头为英文点号,不可命名为 .htaccess.txt)。
2、向该文件写入以下内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
3、创建测试文件 phpEnv\www\myproject\index.php,内容为:。
4、访问 http://localhost/myproject/test/hello,若输出字符串 test/hello,则规则已生效。
三、为 ThinkPHP 框架配置专用伪静态规则
ThinkPHP 默认使用 PATH_INFO 模式,要求 Apache 开启重写且规则适配其路由解析逻辑。phpEnv 下需使用兼容 TP5/6 的标准 .htaccess 写法,避免因 FastCGI 模式导致 PATH_INFO 丢失。
1、确保已执行第一部分的 mod_rewrite 启用与 AllowOverride All 设置。
2、在 ThinkPHP 项目根目录(含 public 子目录)下,于 public/.htaccess 中写入:
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
3、确认 php.ini 中 cgi.fix_pathinfo=1 已启用(phpEnv 默认满足)。
4、访问 http://localhost/mytp/public/index/index(不带 .php),应正常显示首页而非 404。
四、为 Laravel 框架配置 Nginx 风格兼容规则(phpEnv 内置 Apache 适配)
虽 phpEnv 使用 Apache,但 Laravel 官方推荐规则基于 Nginx 语义。此处提供经验证的 Apache 版本,可绕过 public 目录暴露问题,并正确传递 QUERY_STRING 与路径参数。
1、在 Laravel 项目根目录的 public/.htaccess 中写入:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
2、确保 Laravel 的 index.php 位于 public 目录内,且 APP_URL 设置为 http://localhost/your-project(不含 public)。
3、在 phpEnv 主机配置中,将网站根目录指向 Laravel 项目的 public 子目录(非项目根目录)。
4、访问 http://localhost/your-project/user/1,应由 Laravel 路由正确响应,而非 Apache 404。
五、使用 phpEnv 内置的“站点配置”功能免 .htaccess 方式
phpEnv v3.0+ 提供图形化站点管理界面,支持直接在虚拟主机级别注入 Apache 配置片段,避免依赖 .htaccess,提升安全性与优先级控制能力。
1、打开 phpEnv 控制面板,进入 站点管理 → 编辑站点 → 高级设置。
2、在 Apache 配置附加内容 文本框中粘贴:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [QSA,L]
3、勾选 启用此配置,点击保存并重启 Apache。
4、删除项目中已存在的 .htaccess 文件,验证 /api/v1/users 是否仍能被 index.php 正确捕获并解析 $_GET['path']。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











