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

 所属分类:php教程

 浏览:247次-  评论: 0次-  更新时间:2023-03-31
描述:thinkcmf5.1默认是public目录,但是部署到虚拟主机安装步骤不能放在public目录,而是所有文件部署到主机根目录,目录结构需要修改,下面教...

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;
	 }
}复制



 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!