Bootstrap

ThinkPHP Nginx 重写配置

目录

NGINX 重写

Admin项目隐藏入口文件,且禁用Admin模块&Admin.php

1️⃣配置仅用模块

2️⃣新增admin_xyz.php文件(自定义入口文件名),并绑定admin模块

3️⃣配置nginx 重写规则


NGINX 重写

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:

location / { // …..省略部分代码
	if (!-e $request_filename) {
		rewrite  ^(.*)$  /index.php?s=/$1  last;
		break;
	}
}

应用安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

location /youdomain/ {
    if (!-e $request_filename){
        rewrite  ^/youdomain/(.*)$  /youdomain/index.php?s=/$1  last;
        break;
    }
}

快捷复制粘贴

location / {
    index index.php index.html index.htm;
    if (!-e $request_filename) {
            rewrite /mJnxeAXZHI.php(.*)$ /mJnxeAXZHI.php?s=/$1 last;
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
    }
}

Admin项目隐藏入口文件,且禁用Admin模块&Admin.php

1️⃣配置仅用模块

配置后admin禁止访问,无法用doman/admin/index/index 的方式访问

    // 禁止访问模块
    'deny_module_list'       => ['common', 'admin'],

2️⃣新增admin_xyz.php文件(自定义入口文件名),并绑定admin模块

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new  App())->http;

// 绑定到admin模块,不同版本绑定差异请参考手册
$response = $http->name('admin')->run();

$response->send();
$http->end($response);

3️⃣配置nginx 重写规则

location / {
    # 默认执行文件
    index index.php index.html index.htm;

    # 引入nginx配置文件
    #include /www/zksl/public/nginx.htaccess;
    
    # 重写规则
    if (!-e $request_filename) {
            # 我的admin后台入口文件名是`mJnxeAXZHI.php`
            rewrite /mJnxeAXZHI.php(.*)$ /mJnxeAXZHI.php?s=/$1 last;

            # index.php 默认入口重写
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
    }
}

4️⃣常见问题

问题1、后台无法打开,提示模块不存在

原因:Nginx配置后台入口的重写规则,建议后台重写规则优先于index.php的重写规则

;