wordpress更改永久链接404消息 - 301重定向

时间:2016-10-15 19:19:45

标签: php wordpress .htaccess redirect

我的问题类似于Wordpress (Postname Permalink) 404 error,但它超越了这个问题。

我的客户在默认的Wordpress博客结构中拥有数百个页面YYYY / MM / post-name

他们希望将其移至Permalink Structure / post-name

但是,Google和其他搜索引擎中的现有链接必须重定向到正确的“新”链接。页面,不是404,也不是主页。

我的问题是,使用最新版本的Wordpress(在编写本4.6.1时) - 如果你只是进入SETTINGS>永久链接> Post-Name它会正常工作吗?

OR

您是否仍需要修改.htaccess文件,以便“旧网页”能够修改。重定向到新页面?

如果是这样 - 什么是正确的.htaccess文件语法,以便每个新链接都是' 301重定向'告诉搜索引擎该页面已永久移动?

谢谢!

另见Wordpress Codex on Permalink Structure

3 个答案:

答案 0 :(得分:2)

在functions.php

中使用此模板作为替代
add_action('template_redirect','check404');
function check404(){

     if (is_404() ) {

        $url = $_SERVER['REQUEST_URI'];
        $url = esc_url_raw( $url );

        //FIND IF THERE IS A POST...
        $e = explode("/", $url);

        $reversed = array_reverse($e);
        $number = $reversed[0];

        $link = get_permalink($number);
        if(!empty($link)){
            wp_redirect( $link, 301 );
            exit;
        }
        else
            return;
     }

}

这将重定向/YYYY/MM/post-name/ - > /后名称/

答案 1 :(得分:1)

您可以在.htaccess

中尝试此操作
RewriteEngine On
Redirect 301 /YYYY/MM/post-name/ http://yoursite.com/post-name/

您可以创建一个名为enumerate.php的文件来列出您的所有帖子:

include "wp-load.php";

$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;

header('Content-type:text/plain');
foreach($posts as $post) {
    switch ($post->post_type) {
        case 'revision':
        case 'nav_menu_item':
            break;
        case 'page':
            $permalink = get_page_link($post->ID);
            break;
        case 'post':
            $permalink = get_permalink($post->ID);
            break;
        case 'attachment':
            $permalink = get_attachment_link($post->ID);
            break;
        default:
            $permalink = get_post_permalink($post->ID);
            break;
    }
    echo "\n{$permalink}";
    //echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";
}

将枚举放入WordPress主文件夹,您将获得可用于.htaccess文件的列表。

答案 2 :(得分:1)

最后,您可以尝试更新固定链接结构:),并尝试使用旧网址。

如果出现问题,您可以恢复旧的永久链接结构。