我总结的方案如下:
1. 线上站点nginx/apache直接拒绝后台访问,取而代之的是你可以另外单独设一个站点,本地hosts指定一个假域名,这样只有自己能访问后台了。
2.隐藏后台访问路径。
这里主要针对第2点来讨论下怎么隐藏后台路径。
首先想到的是设置路由别名,在下看了一下,路由别名必须精确到控制器名称,而不能给整个模块设置别名,该方案先放弃。
最终我采用了这个方案:单独入口文件绑定admin模块。
1. 创建 public/admin.php , 绑定模块
2. 再route.php中定义路由,拦截 /admin 访问
3. 由于我的服务器配置不支持 /admin.php/index/index 这种pathinfo格式访问,所以需要改成兼容模式url,即 /admin.php?s=/index/index,但是框架并没有提供开关,导致生成的url不是兼容模式,可以通过 Url::root() 方法设定url根路径。
4. 有的地方使用了get表单,需要添加 name="s" 隐藏表单,值是 request()->path()
admin.php代码:
<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/base.php';
//绑定到admin模块
\think\Route::bind('admin');
//设置根url,生成兼容模式url
\think\Url::root(\think\Request::instance()->baseFile().'?s=');
// 执行应用
\think\App::run()->send();route.php代码:<?php
use think\Route;
Route::rule('admin',function(){
return '404 Not Found';
});admin.php可以修改成别人猜不到的名字最佳答案