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的重写规则