前两天遇到一个 WordPress 优化链接规范的客户,其问题源自于 WordPress 本身的固定链接都是属于伪静态处理,就会导致文章页面后面添加斜杠“/”加任意数字依旧会返回 200 状态及正常的文章内容,从而可能会导致出现一些重复收录或被恶意利用,从而导致网站出现问题或者被搜索引擎降权。
由于是 WordPress 自身就存在的一个问题,但是也不算是什么非常大的问题,所以可能没有被大家所重视,因为对于正常的 WordPress 建站和使用推广过程中,我们基本是不太可能手动的在 WordPress 生成的 URL 链接后再加上任意的数组或者参数之类的情况,所以对于网站优化来说搜索引擎也不可能会自动的在链接中加斜杠再加参数,顶多是一些无效的动态参数罢了。
不论是从 WordPress 优化还是网站安全的角度,以及网站优化来说,网站的 URL 都应该具备唯一性,而对于一些其它参数做到屏蔽,一下就是通过再次开发增加一个判断来实现对 WordPress URL 规范优化,代码如下:
123456789101112 |
//判断链接是否规范$current_url = home_url(add_query_arg(array()));$pid = url_to_postid($current_url);$link = get_permalink($pid);if($current_url!=$link){global $wp_query;$wp_query->set_404();status_header(404);nocache_headers();include( get_query_template( '404' ) ); die();} |
使用方法是直接添加到当前主题的 single.php、page.php 文件的最顶部,也就是“<?php” PHP 开始标签之后,同时以上代码中载入了 404 模板,所以可能需要你的 WordPress 主题目录中有 404.php 这个文件,当然你也可以直接注释以上倒数第三行代码。最近再简单的介绍一下判断的原理,其实只要你懂 WordPress 开发,基本上你也能够看懂上面的代码,主要是先直接获取当前页面的 URL,然后在通过 URL 获取当前文章的 ID,然后通过这个 ID 来获取当前文章的规范 URL,通过对比获取当前 URL 和规范的 URL 是否匹配来判断链接是否规范,如果不一致就返回当前主题的 404 页面及 404 状态码。