wp使用了伪静态,为什么短链接还能打开
wp 使用了固定链接,也就是夏日博客在上两篇文章中提到的,使用了固定链接之后,wp 的短链接本不应该打开了,但还可以使用如下的方式打开.
www.xiariboke.net/?p=1
这样就导致了一个问题,因为上面的实例打开的是一篇文章,所以会导到百度收录到,而如果 wp 使用了纯静态生成 html 技术的话,正常的链接应该是如下方式.
www.xiariboke.net/1.html 或者 www.xiariboke.net/article/1.html
这样就有两篇一样的文章了,直接导致百度重复收录,夏日博客一直在研究 .htaccess 文件,却怎么也没能找到原因,一直到分析 .htaccess 之后,发现其如下代码:
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这个代码如果玩过 wp 的应该很熟悉了,这是 wp 默认的由 index.php 来引导链接,比如我们的关于,留言,链接等单页还有分类链接,样式如下:
https://www.xiariboke.net/guestbook
实际上根目录下面是没有 guestbook 这个文件夹的,而上面的代码正好做了个指向,以保证其链接可正常打开,如果没有上面的代码,则显示无法显示,页面错误。
回归正传,既然知道了整站都是由根目录下 index.php 来引向链接的,哪么 wp 的文章短链接也不例外了,同样是由 index.php 这个文件在引向的,而 wp 这里有个小小的 bug,也就是当我们使用了整站静态之后,wp 短链接并没有删除掉,而是依然有效,也就是刚开始我们提到的 /?php=1 这个引向还是有效的,实际上完整链接应该如下:
www.xiariboke.net/index.php?p=1
这里夏日博客小小的偷了个懒,当然也是最有技巧的一个去除 www.xiariboke.net/?p=1 这样显示文章的一个方法,这个想法是对比了又一个站点,因为两个站点使用的都是同样的环境配置,同样的 .htaccess 文件,仔细看了一下,原来是站点的默认文档不同,一个是 index.html、index.php 这样的顺序,一个是 index.php、index.html 的顺序。
这就很容易解决这个问题了,我们只需要将生成首页纯静态文件 index.html 文件放在首位,这样在执行短链接的时候就不会执行 index.php 引向了,而其它单页或者二级目录则继续有效。
对于技术总是不明觉厉…..