ThinkPHP 5.1 的 .htaccess 文件必须置于 public 目录(入口目录),核心规则是将非真实文件/目录的请求重写至 index.php 并正确传递 PATH_INFO;子目录部署需添加匹配 URL 的 RewriteBase 指令。

ThinkPHP 5.1 的 .htaccess 文件要写在项目入口目录(通常是 public/ 目录,即 index.php 所在位置),不能放在项目根目录或其它地方。规则核心是:只把非真实文件和目录的请求,重写到 index.php 并保留路径信息,同时确保 PATH_INFO 正确传递。
基础标准写法(推荐)
在 public/ 目录下新建文件,命名为 .htaccess(注意开头是英文点号,不是 htaccess 或 .htaccess.txt),内容如下:
<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>
-
Options +FollowSymlinks -Multiviews:启用符号链接支持,禁用内容协商,避免干扰 -
RewriteCond %{REQUEST_FILENAME} !-d和!-f:跳过真实存在的目录和文件(如/static/css/app.css、/uploads/logo.png),不重写它们 -
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]中的PT(PassThrough)必须保留,否则 Apache 无法正确解析PATH_INFO,TP5.1 路由会失效
部署在子目录时需加 RewriteBase
如果你的网站访问地址是 https://example.com/myapp/(即 TP 项目放在二级目录 myapp 下),则需在 RewriteEngine On 后添加一行:
将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。
RewriteBase /myapp/
注意末尾斜杠不能少,且路径必须与实际 URL 路径完全一致。
立即学习“PHP免费学习笔记(深入)”;
常见错误排查点
- Apache 模块未启用:执行
sudo a2enmod rewrite并重启服务(如systemctl restart apache2) - 虚拟主机配置中
AllowOverride不是FileInfo Options(不能是None或All过宽设置) - 框架配置未配合:确认
config/app.php中'url_common' => false(关闭普通 URL 模式),并已开启路由(默认开启) - 访问测试:打开
https://yourdomain.com/index/index,应正常显示首页;若出现 404 或跳转到index.php/index/index,说明规则未生效或位置错误


















