MAMP PRO中ThinkPHP伪静态核心是修改Nginx/Apache主配置而非.htaccess:Nginx模式下需在模板中配置root指向public/、使用try_files兜底至index.php并确保PHP块也含try_files;Apache模式则须启用.htaccess且将文件置于public目录。

在 MAMP(尤其是 MAMP PRO)里配 ThinkPHP 伪静态,核心不是改 .htaccess,而是改 Nginx 或 Apache 的主配置——因为 MAMP PRO 默认用 Nginx 做前端代理,且对 .htaccess 完全无视。
为什么 .htaccess 在 MAMP PRO 里基本没用
MAMP PRO 的 Apache 模式下虽支持 .htaccess,但默认关闭了目录级重写;而它的 Nginx 模式压根不读 .htaccess。你放了文件、写了规则,刷新页面还是 404,大概率是这个原因。
- Apache 模式:必须手动开启
AllowOverride All,且确保mod_rewrite已启用(MAMP PRO 界面里可勾选,不用改httpd.conf) - Nginx 模式:
.htaccess被完全忽略,所有规则必须写进 Nginx 配置模板 - ThinkPHP 6+ 默认入口是
public/index.php,但 MAMP PRO 新建站点时默认 root 指向项目根目录,不是public/—— 这会导致$document_root/index.php找不到
MAMP PRO 中 Nginx 模式下配 TP5/6 伪静态(推荐)
这是最稳定的方式。进入 File → Edit Template → nginx,找到你要配的站点对应的 server 块,在 location / 内部替换或添加:
RewriteEngine On
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php?$query_string;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
注意三个关键点:
立即学习“PHP免费学习笔记(深入)”;
-
root必须指向your-project/public/,不是项目根目录;否则/index.php会 404 -
try_files $uri $uri/ /index.php?$query_string;是核心,它把所有非静态资源请求兜底给index.php -
location ~ \.php$块里的try_files不可省,否则 PHP 脚本路径匹配失败,路由参数(如s=/admin/login)根本传不进去
Apache 模式下启用 .htaccess 并适配 TP 路由
如果你坚持用 Apache(比如调试某些扩展),需两步到位:
- 在 MAMP PRO 界面左侧选中站点 → 右侧点击 Apache 标签 → 勾选
Enable .htaccess files - 把
.htaccess放到public/目录下(不是项目根目录),内容用 ThinkPHP 官方推荐的:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
这里容易错的是:RewriteBase 不要加,TP 自动识别;index.php 是相对于 public/ 的,所以 root 必须设对,否则 403 Forbidden 或空白页。
验证和常见报错信号
改完配置后务必重启 MAMP PRO(不是只重启服务器)。访问 http://localhost/test/hello(假设路由存在),看是否进到控制器;若失败,盯住这几个信号:
- 返回 404:Nginx 的
root指向错误,或try_files缺失;Apache 下则是.htaccess未生效或位置不对 - 返回 500:
SCRIPT_FILENAME拼错了,比如$document_root/index.php实际不存在 - URL 里还带着
index.php:说明重写根本没触发,检查try_files是否被其他location覆盖,或if (!-e ...)写法在新版 Nginx 中已被弃用,优先用try_files
最常被忽略的一点:MAMP PRO 的 Nginx 模板修改后,必须点右上角 Save 再点 Restart Servers,仅重启服务不加载新模板。



















