wordpress修改了固定链接后404怎么办?
2017 年 1 月 6 日
wordpress修改了固定链接后404怎么办?
今天修改了下固定链接做成了多域名。
原来的固定链接http://go2live.cn/archives/191637.html
现在对应的页面是http://dev.go2live.cn/python/python%E5%AD%A6%E4%B9%A0%E6%89%8B%E5%86%8C.html。
还没有研究过wordpress的api。
查了下404的页面是在 wp-content/themes/你的主题/404.php
我的页面是
<?php get_header(); ?>
<div class="content-wrap">
<div class="content">
<?php hui_404() ?>
</div>
</div>
<?php get_footer(); ?>
代码好简单。就是显示了下找不到内容,然后一个链接回首页。
观察到新的页面和id没有关系,是不可能通过apache或者nginx的rewrite直接重定向过去的。
只有写代码实现了。
今天编辑文章的时候注意到一个短链接形式 http://www.go2live.cn/?p=191637
然后这个链接会跳转到http://dev.go2live.cn/python/python%E5%AD%A6%E4%B9%A0%E6%89%8B%E5%86%8C.html。
好事,这样省略了我根据id去生成链接的过程,毕竟我还没有研究过wordpress api。
办法找到了。
1. http://go2live.cn/archives/191637.html
2. http://www.go2live.cn/?p=191637
3. http://dev.go2live.cn/python/python%E5%AD%A6%E4%B9%A0%E6%89%8B%E5%86%8C.html
很简单的解决方案,直接从链接1中正则解析出id,然后拼成链接2,跳转到链接2,就会重定向到链接3.
达到目的。
从Dash上搜了下redirect,发现真有一个函数wp_redirect做url跳转的事。
最后的代码:
<?php get_header(); ?>
<div class="content-wrap">
<div class="content">
<?php
if (preg_match('~/archives/(\d*)\.html.*~',$_SERVER['REQUEST_URI'],$matches))
{
$postid = $matches[1];
wp_redirect( get_bloginfo('url').'?p='.$postid );
exit;
}
?>
<?php hui_404() ?>
</div>
</div>
<?php get_footer(); ?>
改固定链接容易,但是之前的链接可就全404了,这对seo来说可不是好事。。找办法重定向回正确的地址吧。
我干了两次这种事。
第一次通过rewrite规则解决。
第二次改写404.php解决。
文章简单,希望能帮助到你。