博客优化

为什么WordPress会有写着沉默是金的index.php?

publish-date 2024-11-08
update-date 2024-11-22
# WordPress

契机

打算做自己的主题,就进到了wp-content/themes文件夹。
再一次看到了那个突兀的index.php文件,里面写着:

<?php
// Silence is golden.

之前也产生过疑问,但没有去查,这次终于忍不了了,总算去查了。

原因

为了防止目录浏览。

什么意思?
就是说有这个index.php文件的存在,除了你以外的其他人就无法访问目录了。
用户访问wp-content,只会得到一个什么信息都没有的空白页。
其实还是有一点信息的,如果查看源代码就能看到这句作为注释的Silence is golden.了。

没有会怎样?
会这样,如下图:

result of not having index.php

随便哪个人往你网址后面加上wp-content,就能把你裤衩都给扒光了。

所以,为了保护自己的裤衩目录结构,需要有这个index.php起到占掉首页位置的作用。

应用

综上所述,WordPress目录下的每个文件夹都需要一个空白index.php吗?
出于安全防护和隐私保护的考虑,确实需要有的。

思考

关于静态化插件

但是,我的情况有那么一丁点特殊:
我上面截图的网址前缀是https://kazelife.com/,而不是https://kazelife.com/

从本地到远程的过程我是通过静态化插件来实现的,
而这个插件是能控制要不要把文件夹部署过去的,
只要我设置成不要把我的wp-content文件夹部署过去,不就没人能看到了嘛?

道理确实是这么个道理,但是wp-content里面还有很多必须要部署过去的文件,
你直接一刀切会导致网站崩溃,精细化控制也麻烦得要死,所以还是带上防护罩过去吧。

关于robots.txt

我试着访问了一下 https://kazelife.com/wp-content/,返回的结果是forbidden。

我突然想起来我好像是在robots.txt里禁用过搜索引擎索引wp-content文件夹的。
看了一下,确实有写一句:Disallow: /wp-content/

但搜索引擎是不一定听robots.txt的话的,而且就算写了也无法阻止用户直接打字访问。

所以,别想着偷懒了,还是老老实实在每个文件夹下都放一个index.php吧!

注:WordPress默认有在每个文件夹下放好,我是想试着自己做主题才需要手动放。