首页 文章

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

提问于
浏览
2

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

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

他们想把它移到Permalink Structure / post-name

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

我的问题是,使用最新版本的Wordpress(在编写本4.6.1时) - 如果您只是进入设置>永久链接>后名称它将正常工作吗?

要么

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

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

谢谢!

另见Wordpress Codex on Permalink Structure

3 回答

  • 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/ - > / post-name /

  • 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 文件的列表 .

  • 1

    最后,您可以尝试更新永久链接结构:),并尝试使用旧URL .

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

相关问题