我见过太多人把PHP文件往根目录一扔就完事,站根结果半年后连自己都找不到东西。目录你打开FTP,站根看到的目录就是一片混沌:index.php、test.php、站根backup.php、目录新建文件夹(3)。站根这哪是目录网站根目录?分明是数字垃圾场。
根目录的站根本质很简单——它是你网站的“家”。浏览器访问你的目录域名时,服务器默认去这个目录里找index.php或index.html。站根就这么点事,目录但处理方式能分出三六九等。站根有人把根目录当成电脑桌面,目录什么文件都往上堆;有人则像整理手术室一样分区管理。站根
我接手过一个客户的网站,根目录里躺着200多个文件,其中17个是不同时期的数据库备份,还有几个名字叫“最终版”“最终版2”“真的最终版”的压缩包。最离谱的是,有个config.old.php就明晃晃放在根目录,里面写着数据库密码。这不是技术问题,是安全意识为零。
正确的做法其实不复杂。核心入口文件放根目录,这是必须的——index.php、.htaccess、robots.txt这些。但业务代码应该分层。拿ThinkPHP或Laravel这类框架来说,它们自带public目录作为真正的web根目录,框架核心代码全在上级目录。这种设计不是装酷,是为了安全——把敏感文件隔离在浏览器直接访问范围之外。
自己写原生PHP的话,我习惯在根目录只留一个入口文件,其他全放子目录。比如这样:
/index.php(所有请求都走这里)
/config/(数据库配置、常量定义)
/includes/(公共函数、类库)
/templates/(HTML模板)
/uploads/(用户上传的文件,这个必须开放权限但要做好校验)
有个细节很多人忽略——uploads目录和代码目录要分开。如果你把上传的文件放在和代码同一个目录,一旦服务器支持执行PHP,攻击者传个webshell上去就直接拿你服务器了。分开之后,uploads目录设置成禁止执行脚本,风险立刻降一半。
再聊聊命名。根目录下那些test.php、demo.php、tmp.php,该删就删。每个多余的文件都是攻击面。我见过有人根目录留着phpinfo.php,这等于把服务器配置详情贴在门口供人参观。
还有备份文件。手动备份的时候,有人图省事直接复制一份index.php.bak放原地。这种文件一旦被访问,源码就裸奔了。备份要么打包放服务器外,要么放网站根目录之外的地方,千万别跟web文件混在一起。
最后说个观察——很多人改代码喜欢直接在服务器上改。今天改一下index.php,明天加个功能,时间久了根目录文件状态跟本地Git仓库完全对不上。这不是根目录管理的范畴,但根目录会如实反映你的混乱。文件日期乱七八糟,代码风格五花八门,一看就知道经历了多少任开发者。
根目录就该是个干净的入口,而不是整个项目的仓库。你把杂物都堆在门口,客人进门第一眼就是乱糟糟的,黑客看到的是无数可趁之机。花半小时清理一下,把该挪的挪走,该删的删掉,以后维护能省下大把时间。
别嫌麻烦。网站被黑的时候,你就知道根目录干净有多重要了。
