游客发表
把文件传到网站根目录,上传这事听起来简单,到网做起来却总有人栽跟头。站根我见过太多人,目录拿着FTP账号,上传对着cPanel后台发呆,到网或者用WordPress后台的站根媒体库上传了个压缩包,然后问我:“我传到根目录了,目录怎么还是上传不行?”
你确定你传的是根目录吗?还是传到了某个子文件夹里,自己却没察觉?到网根目录,就是站根你的域名指向的那个最顶层文件夹。对Apache服务器来说,目录通常是上传public_html或者www;对Nginx,可能是到网/usr/share/nginx/html。但别背这些路径,站根你得看你的主机面板。打开文件管理器,第一眼看到的那层,就是根目录。如果你看到里面有wp-admin、wp-content这样的文件夹,说明你用的是WordPress,那根目录就是它们所在的这层,没错,就是这层。
有个朋友,做独立站的,非要把一个静态HTML文件传到public_html/backup/old/里,然后访问域名,怎么都打不开。我远程一看,笑了——你的文件在根目录下的三层子目录里,域名解析过去根本不会自动去找那个路径。你得直接访问你的域名.com/backup/old/文件名.html才行。他一脸懵:“我以为传上去就能用。”这就是没搞懂根目录的意义:根目录是服务器响应HTTP请求的起始点,它不会递归去翻你的子目录。
还有更隐蔽的坑。有些人用宝塔面板,上传文件时默认跑到/www/wwwroot/你的域名.com这个路径,这其实是站点根目录,没问题。但如果你在面板里新建了第二个站点,或者把默认站点目录改了,那你的文件可能传到了另一个站点的根目录下。你访问的域名指向的是A站点,文件却传到了B站点,那自然404。这不算罕见,我甚至见过有人把文件传到了/www/server/——那是面板自身的目录,跟网站一点关系都没有。
上传方式也有讲究。用FTP工具,比如FileZilla,你连上服务器后,默认会进入一个初始目录,可能是/home/用户名,这时候你得手动导航到public_html。别偷懒,别直接往/home/用户名里扔文件,那只是你的家目录,不是网站根目录。有些主机商把家目录和网站根目录设置成同一个,但大多数不是。所以,你得先看你的服务器配置,或者问一下主机商的客服,别自己瞎猜。
传完文件怎么验证?别光看FTP里的进度条。你打开浏览器,输入你的域名,如果看到的是默认页或者404,说明文件没在正确位置。或者,你直接在地址栏输入你的域名.com/文件名.html,如果显示出来了,那就对了。要是显示403,那可能是权限问题——文件权限得设为644,文件夹得是755,这个常识别忘。但更常见的是,你压根没传到根目录,而是传到了根目录的上一层,或者下一层。
我自己也犯过这毛病。有次给客户部署一个静态页面,我自信满满地在服务器上敲命令,把文件复制到了/var/www/,然后访问域名,一片空白。排查了半天,才发现Nginx的配置里,root指向的是/var/www/html/,不是/var/www/。就差一个html目录,多了一层,请求就找不到文件了。你说气不气人?
所以,下次再有人说“传上去就能用”,你得留个心眼。根目录不是你想传就能传对的,它是个精确的位置,差一级目录都不行。你上传之前,先看看你服务器上有没有默认的index.html或者index.php,如果有,那文件就在根目录旁边,你把新文件传到和它同一层,就对了。如果没有,你就找找.htaccess或者nginx.conf里的root配置,跟着那个路径走,准没错。
友情链接