Hướng dẫn cách sửa lỗi 404 WordPress SEO Sitemap của Yoast

Plugin WordPress SEO của Yoast với hơn 1 triệu lượt tải về là plugin SEO tốt nhất và hoàn thiện nhất cho WordPress. Dù chưa hề có vấn đề gì với plugin này trong quá khứ,  một số người dùng cảm thấy nó khá là khó chịu. Gần đây một trong những khách hàng của chúng tôi gặp phải lỗi 404 cho sitemap tạo bởi plugin của Yoast. Sau khi thử nghiệm 1 vài thứ chúng tôi đã có tìm ra giải pháp cho vấn đề này. Trong bài viết này chúng tôi sẽ trình bày cách sửa lỗi 404 WordPress SEO Sitemap của Yoast.

Cập nhật: Bạn nên hiểu rằng vấn đề này thường có nguyên nhân là do chức năng theme hoặc plugin được lập trình kém. Plugin của Yoast hoạt động hoàn toàn bình thường với website của chúng tôi. 

Điều đầu tiên mà bạn muốn thử là mở file .htaccess (bằng cách mở WordPress SEO plugin > Edit Files option) và thêm đoạn code này vào đó:

1
2
3
4
5
6
7
8
# WordPress SEO - XML Sitemap Rewrite Fix
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L]
RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 [L]
</IfModule>
# END WordPress SEO - XML Sitemap Rewrite Fix

Cho đa số người dùng thì cách này có hiệu quả. Một số người lại báo dù đoạn code sửa được lỗi nhưng trang vẫn phản hồi lỗi 404 có nghĩa là công cụ Google Webmasters không thể tìm thấy nó. Trong trường hợp của khách hàng chúng tôi, cách trên chưa thể giải quyết được vấn đề.

Tuy không hề muốn những chúng tôi phải chỉnh sửa file plugin cốt lõi để sửa lỗi. Được đề xuất bởi hadjedj.vincent, chúng tôi sửa class-sitemaps.php nằm tại “/wp-content/plugins/wordpress-seo/inc/class-sitemaps.php”.

Hãy chú ý vào dòng function init() mà đổi đoạn đó thành như này:

1
2
3
4
5
6
7
8
9
10
11
/**
     * Initialize sitemaps. Add sitemap rewrite rules and query var
     */
    function init() {
        global $wp_rewrite;
        $GLOBALS['wp']->add_query_var( 'sitemap' );
        $GLOBALS['wp']->add_query_var( 'sitemap_n' );
        add_rewrite_rule( 'sitemap_index.xml$', 'index.php?sitemap=1', 'top' );
        add_rewrite_rule( '([^/]+?)-sitemap([0-9]+)?.xml$', 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]', 'top' );
        $wp_rewrite->flush_rules();
    }

Điều chúng ta vừa làm cơ bản là thêm global $wp_rewrite; phía trước những dòng có sẵn và thêm flush_rules sau đoạn code. Bằng cách thêm đoạn này vào plugin, nó đã sửa thành công lỗi 404 trên trang của khách hàng.

Cập nhật: Như một số người dùng đã báo cáo, mặc dù phương pháp trên có hiệu quả nhưng họ vẫn phải bỏ chọn option sitemap trong plugin SEO của Yoast và lưu cài đặt. Sau khi chọn lại thì lỗi này đã được sửa.

Nếu như bạn đang tìm cách giải quyết, mong rằng bài viết này đã giúp được các bạn.