- A+
文章目录
前言
最近在整理之前写的项目,想上一下演示网址,但又不想为每个项目都配置一个域名。
打算全放到 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
所以我们不能单纯的只判断全等,这里我改成了用正则匹配
这样就可以正常访问了
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫