WP 404页面优化转为302,301

最近网站改版了,旧的文章内容页面伪静态网址直接位于根目录下。由于新的网址采用目录化结构,导致大量旧的网址访问时出现404错误。

现在分析网址结构和解决方案记录如下:

原网址:
https://www.onexin.net/pandemic.html
新网址:
https://www.onexin.net/latest/pandemic.html

优化方案,将代码放到主题的function.php文件中

// 404
add_action('init', 'onexin_404_listener', 0);
function onexin_404_listener() {
// /pandemic.html
if(preg_match("/^\/\w+.html(\/amp)?/", $_SERVER['REQUEST_URI'], $match)) {

//header('HTTP/1.1 301 Moved Permanently');
header('Location: /latest'.$_SERVER['REQUEST_URI'].$match[1]);
exit;
}
}

注:上述正则实用于位于根目录下/abc.html格式的页面,对于采用纯英文命名的如“/abc-abc-abc-xxxxx/”此类格式的,请自行修改正则。
“/^\/\w+-\w+-[^\/]+(\/amp)?/”

进阶方案:
通过404网址我们获取到slug关键字,然后还原其最新的网址结构。

SELECT term_id FROM  `wp_terms` WHERE  `slug` =  'pandemic' LIMIT 1

SELECT term_taxonomy_id FROM `wp_term_taxonomy` WHERE `term_id` =51 LIMIT 1

SELECT object_id FROM `wp_term_relationships` WHERE `term_taxonomy_id` =51 LIMIT 1

相关文章:

1、RewriteRule 301设置后搜索引擎保留的哪个网址
https://www.onexin.net/seo/301-redirect/

2、如何做301重定向(扩展篇)
https://www.onexin.net/solution/rewrite/how-to-do-a-301-redirect/

3、实战301 Redirect重定向在Apache和IIS服务器上
https://www.onexin.net/latest/301-redirect-actual-redirect-in-apache-and-iis-servers/

转载请注明出处:https://www.onexin.net/solution/wp-404-302-301/

Leave a Reply

Your email address will not be published. Required fields are marked *