thinkphp 在二级目录运行如何配置伪静态

2023 年 10 月 6 日 星期五(已编辑)
/ , , , ,
494
这篇文章上次修改于 2023 年 10 月 7 日 星期六,可能部分内容已经不适用,如有疑问可询问作者。

thinkphp 在二级目录运行如何配置伪静态

前言

最近在整理之前写的项目,想上一下演示网址,但又不想为每个项目都配置一个域名。

打算全放到 demo.fosky.top 这个域名下。

便研究起了如何配置 Nginx,以便让 thinkphp 在二级目录下运行。

目录结构

demo.fosky.top ├─reg │ ├─application │ ├─config │ ├─extend │ ├─public │ │ │─static │ │ │ └─css │ │ └─index.php │ ├─route │ ├─runtime │ └─thinkphp ├─shop │ ├─application │ ├─config │ ├─extend │ ├─public │ │ └─static │ ├─route │ ├─runtime │ └─thinkphp └─zy

研究过程

百度了蛮久的,但找到的教程都和 tp 的文档上写的差不多 URL访问 · ThinkPHP5.1完全开发手册 · 看云 (kancloud.cn)

便尝试着配置了下。

但是呢,我的运行目录在 public,我又不想改入口文件位置,毕竟那样我需要另外设置规则来屏蔽目录访问。

那大家可能会说了,把文档里的规则改改,加上 public 不就好了吗?

但这样会有个问题,直接访问目录显示 404。

后面加上模块名才能访问,这就很屮了。

所以还是得研究怎么改。

后面我想到,只要访问路径和二级目录名一样时,rewrite 到 index.php 不久好了吗?

果然设置之后就可以了。

但是还是有问题的,因为我的 public 目录下是有 static 目录来存放静态文件的,但由于项目目录下找不到文件,所以它就直接 rewrite 到 index.php 了,然后就会提示模块不存在,并返回 404 错误码。

然后我想到可以再加条匹配规则,检测到访问路径中有 static,就 rewrite 到 /public/static 去访问文件。

这样问题就解决了。

当然也可以匹配文件后缀名。

10.7 补充

在本地测试部署另一个项目时,发现如果像这样有查询字符串,就会 404

所以我们不能单纯的只判断全等,这里我改成了用正则匹配

这样就可以正常访问了

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...