前言
最近在整理之前写的项目,想上一下演示网址,但又不想为每个项目都配置一个域名。
打算全放到 另一个域名下。
便研究起了如何配置 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)
如果你的应用安装在二级目录, Nginx
的伪静态方法设置如下,其中 youdomain
是所在的目录名称。
location /youdomain/ {
if (!-e $request_filename){
rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=/$1 last;
}
}
便尝试着配置了下。
但是呢,我的运行目录在 public,我又不想改入口文件位置,毕竟那样我需要另外设置规则来屏蔽目录访问。
那大家可能会说了,把文档里的规则改改,加上 public 不就好了吗?
但这样会有个问题,直接访问目录显示 404。
所以还是得研究怎么改。
后面我想到,只要访问路径和二级目录名一样时,rewrite 到 index.php 不久好了吗?
location /reg/ {
if (!-e $request_filename){
rewrite ^/reg/(.*)$ /reg/public/index.php?s=$1 last;
}
if($request_uri=/reg/){
rewrite ^/reg/(.*)$ /reg/public/index/index last;
}
}
然设置之后就可以了。
但是还是有问题的,因为我的 public 目录下是有 static 目录来存放静态文件的,但由于项目目录下找不到文件,所以它就直接 rewrite 到 index.php 了,然后就会提示模块不存在,并返回 404 错误码。
然后我想到可以再加条匹配规则,检测到访问路径中有 static,就 rewrite 到 /public/static 去访问文件。
这样问题就解决了。
当然也可以匹配文件后缀名。
本文共 391 个字数,平均阅读时长 ≈ 1分钟
叼茂SEO.bfbikes.com
看的我热血沸腾啊
想想你的文章写的特别好www.jiwenlaw.com