注册会员
×

已有账号? 请点击

使用其他方式登录

thinkcmf5.1虚拟主机安装部署步骤

发布2021-06-02 浏览188次

详情内容

thinkcmf5.1默认是public目录,但是部署到虚拟主机安装步骤不能放在public目录,而是所有文件部署到主机根目录,目录结构需要修改,下面教大家怎么修改并部署到阿里云之类虚拟主机。

方法一:(直接利用伪静态文件 .htaccess 重写路由)

1. 在根目录新起个  .htaccess  文件,

2. 往新建的文件里面写入以下内容:

apache

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/public/
    RewriteRule ^(.*)$ public/$1 [L,QSA]
</IfModule>

nginx

location / {
	index  index.php index.html index.htm;
	 #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
	 if (!-e $request_filename)
	 {
		#地址作为将参数rewrite到index.php上。
		#rewrite ^/(.*)$ /index.php?s=$1;
		#若是子目录则使用下面这句,将subdir改成目录名称即可。
		rewrite ^/public/(.*)$ /public/index.php?s=$1;
	 }
}
 
location /api/ {
	index  index.php index.html index.htm;
	 #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
	 if (!-e $request_filename)
	 {
		#地址作为将参数rewrite到index.php上。
		#rewrite ^/(.*)$ /index.php?s=$1;
		#若是子目录则使用下面这句,将subdir改成目录名称即可。
		rewrite ^/api/(.*)$ /api/index.php?s=$1;
	 }
}

3. 刷新直接访问即可


4.还是访问不了, 那么就是 public 下面的.htaccess 有问题, (此种方法, 路由中会多出个 /public )

方法二(推荐):(移动 public 目录下的文件,并修改index.php 及 api.php 的内容)

1. 把public里面的文件全部移动都根目录,

2. 找到 index.php 和 api.php 里的 "define('CMF_ROOT', dirname(__DIR__) . '/');" 修改为 "define('CMF_ROOT', __DIR__ . '/thinkcmf/'); "

3. api.php的还要把 "require __DIR__ . '/../vendor/thinkphp/base.php;" 改为 "require CMF_ROOT . 'vendor/thinkphp/base.php';"

4.将除public下文件和目录,所有app目录和api目录,vendor目录,统一放到thinkcmf目录里

5. 刷新访问即可.

image.pngimage.png

index.php入口文件内容如下:

<?php
 
namespace think;
 
// [ 入口文件 ]
 
// 调试模式开关
define('APP_DEBUG', true);
 
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/thinkcmf/');// ayumi改过了
 
// 定义CMF数据目录,可更改此目录
define('CMF_DATA', CMF_ROOT . 'data/');
 
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'app/');
 
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
 
// 加载基础文件
require CMF_ROOT . 'vendor/thinkphp/base.php';
 
// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();

api.php 入口文件内容如下:

<?php
 
namespace think;
 
// [ 入口文件 ]
 
// 调试模式开关
define('APP_DEBUG', true);
 
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/thinkcmf/');// ayumi改过了
 
// 定义CMF数据目录,可更改此目录
define('CMF_DATA', CMF_ROOT . 'data/');
 
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'api/');
 
// 定义路由目录
define('ROUTE_PATH', APP_PATH . 'route.php');
 
// 定义配置目录
define('CONFIG_PATH', CMF_ROOT . 'data/config/');
 
// 定义命名空间
define('APP_NAMESPACE', 'api');
 
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
 
// 加载基础文件
require CMF_ROOT . 'vendor/thinkphp/base.php';
 
// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();

伪静态保持原来不变;

apache

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^api/?(.*)$ api.php?s=$1 [QSA,PT,L]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

nginx:

location / {
	index  index.php index.html index.htm;
	 #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
	 if (!-e $request_filename)
	 {
		#地址作为将参数rewrite到index.php上。
		#若是子目录则使用下面这句,将subdir改成目录名称即可。
		rewrite ^(.*)$ /index.php/$1 last;
	 }
}
 
location /api/ {
	index  index.php index.html index.htm;
	 #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
	 if (!-e $request_filename)
	 {
		#地址作为将参数rewrite到index.php上。
		#若是子目录则使用下面这句,将subdir改成目录名称即可。
		rewrite ^/api/(.*)$ /api.php?s=$1 last;
	 }
}


点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
  • 支付宝付款
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息