ThinkPHP伪静态规则怎么在Ubuntu用_ThinkPHPUbuntu伪静态介绍【教程】
在Ubuntu部署ThinkPHP伪静态,需Apache启用mod_rewrite并设置AllowOverrideAll,正确配置项目根目录.htaccess的RewriteBase和[QSA,PT,L]规则,以避免404错误。此外还应检查文件权限并利用错误日志进行排查。
ThinkPHP 的伪静态规则在 Ubuntu 上部署,最容易踩的坑就是拿 Windows 或 Nginx 那套写法直接套。Apache 底层的 .htaccess 解析机制完全不同,关键点其实就两个:mod_rewrite 模块必须启用,同时目录级的配置要放开权限。只要有一环没到位,等着你的就是 404。
Apache 必须启用 mod_rewrite 并允许 .htaccess 覆盖
不少人写了规则但死活不生效,问题往往出在 Apache 根本没读取 .htaccess 文件。先确认三件事:
- 用
sudo a2enmod rewrite启用模块,然后务必sudo systemctl restart apache2,重启才能生效 - 光启用模块不够,虚拟主机配置里必须显式放开权限。在
/etc/apache2/sites-a vailable/your-site.conf的块里,AllowOverride必须设为All,不能用None或FileInfo - 如果用的是默认站点,改的是
000-default.conf,别忘了确认DocumentRoot路径和你的 ThinkPHP 项目路径一致
ThinkPHP 5/6 默认 .htaccess 规则要适配 Ubuntu 路径
官方给的 .htaccess 在 Ubuntu 下经常因为 RewriteBase 配错导致重写失败,尤其是项目不在网站根目录时:
- 如果你的 ThinkPHP 部署在
/var/www/html/myapp,RewriteBase必须写成RewriteBase /myapp/,注意结尾带斜杠 - 如果部署在根目录(
/var/www/html),RewriteBase就用RewriteBase /,不能省 - ThinkPHP 6 推荐使用下面这个精简版规则,对 Ubuntu Apache2.4+ 兼容性最好:
Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
这里 [QSA,PT,L] 中的 PT(pass-through)很关键——它确保 Apache 把重写后的 URL 交给 PHP 处理器,否则有可能被当作静态资源直接拦截。
常见 404/500 错误对应排查点
访问 /index/index 返回 404?或者直接报 Internal Server Error?先逐一核对这几项硬性条件:
- 检查
/var/www/html/myapp/.htaccess文件权限:必须是www-data可读,执行sudo chown www-data:www-data .htaccess和chmod 644 - 确认
index.php文件存在且可执行(ls -l index.php看权限,非 000 就行) - 打开 Apache 错误日志实时追踪:
sudo tail -f /var/log/apache2/error.log。看到Invalid command 'RewriteEngine'说明模块没启;看到Options FollowSymLinks or SymLinksIfOwnerMatch is off说明Options +FollowSymlinks缺失 - ThinkPHP 5.1+ 默认关闭
PATH_INFO,需要在config/app.php中确认'url_common_param' => false且'url_route_on' => true
最容易忽略的是 AllowOverride All 和 RewriteBase 的组合匹配——这两个值一旦错位,整个重写链就会断在第一环,连日志都不会报明显错误,只在浏览器默默返回一个 404。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















