web目录
打开一个网站,浏览器背后其实在做一件很朴素的事:把服务器上的某个文件抓回来,渲染给你看。这个“某个文件”,就是web目录存在的全部意义。没有目录,服务器就是一座没有门牌的城,你永远敲不对那扇门。
我最早意识到目录结构有多要命,是在一台老旧的Apache服务器上。那时我往/var/www/html里扔了一个index.html,访问域名,出来了。然后我又建了个about文件夹,里面放了个team.html,想着访问/about就能看到团队页。结果404。折腾了半小时才搞明白,服务器只认/about/team.html,除非我配置DirectoryIndex,或者把文件命名成index.html。你看,目录不是文件夹那么简单,它是一套约定,一套服务器和访问者之间的暗号。
路径的两种写法,差一个字就翻车
相对路径和绝对路径,这俩词听着像教科书术语,实际用起来完全是血泪。写前端的时候,./images/logo.png和/images/logo.png看着差不多,一个点而已。但前者是“从当前文件所在位置找”,后者是“从网站根目录找”。你把页面从根目录挪到子目录里,相对路径跟着走,绝对路径原地不动——然后图片全裂。我见过一个电商站,所有商品图都写死了/static/img/,后来整站搬进/shop/子目录,一夜之间首页变成一堆灰色占位框。改路径改到凌晨三点。
所以我现在写任何静态资源引用,先问自己一句:这文件以后会不会挪窝?会,就用相对路径;不会,再用绝对路径。没有标准答案,只有你对自己项目结构的预判。
目录列表:方便和危险是同一件事
如果你访问一个目录,里面没有index.html,很多服务器会直接给你列个清单,文件名、大小、修改时间,整整齐齐。开发阶段这功能挺爽,点来点去就能翻文件。上线之后还开着,那就是把家门钥匙插在锁上。我扫过一些站点,/backup/目录直接列出来,里面躺着database.sql。点一下,整个库下载走。这事不稀奇,每年都有。
Nginx默认autoindex off,Apache默认Options Indexes是开的。你要是用Apache,去配置文件里把那行Indexes删掉,或者改成-Indexes。三十秒的事,能挡掉一堆自动化扫描器。别等出事再补。
robots.txt 和 sitemap.xml 放在哪,也有讲究
这两个文件必须放在网站根目录。不是/public/,不是/static/,就是根。爬虫只认https://example.com/robots.txt这个地址,你放别处它看都不看。我帮人查过一个问题:站点地图提交了三个月,收录量一直是零。最后发现sitemap.xml被放进了/assets/文件夹,搜索引擎压根没找到。挪到根目录,一周后索引量涨了四倍。目录位置这种事,没有商量余地。
最后说一个我自己的习惯
不管多小的项目,我在根目录下永远留一个/tmp/文件夹,里面放草稿、测试页、临时上传的东西。上线前整个文件夹删掉或者加一层deny all。这个习惯救过我两次——一次是测试用的后台入口忘了关,一次是客户发来的未压缩原图。目录结构不只是给服务器看的,也是给你自己看的。乱糟糟的目录里,迟早会藏着一个你忘了删的东西。
(责任编辑:时尚)














