Bạn đang gặp phải các lỗi liên quan đến sitemap trong wordpress như Error on line 2 at column 6 hoặc Error on line 1 at column 8: XML declaration allowed only at the start of the document thì bạn đang ở đúng nơi. Bài viết do Fame Media biên soạn sẽ hướng dẫn bạn chi tiết cách khắc phục, cách này cũng đã được chúng tôi khắc phục ngay trên website Famemedia.vn.
Vì sao cần khắc phục, sửa lỗi XML declaration allowed only at the start of the document?
Sau khi thiết kế website một thời gian, có thể web sẽ gặp các vấn đề liên quan đến sitemap, và chính điều này sẽ được Google Search Console cảnh báo ở mục Sơ Đồ Trang Web, nếu bạn không kịp thời khắc phục lỗi sitemap XML declaration allowed only at the start of the document thì chắc chắn từ khóa của bạn sẽ có dấu hiệu rớt hạng thê thảm thiết.
Chắc chắn, bởi vì các con bọ của Google sẽ khó có thể truy cập vào từng ngóc ngách thu thập và đọc dữ liệu đang có trên website, dẫn đến việc phân loại, xếp hạng nội dung sẽ gặp khó khăn, cũng như bạn vào khu rừng bị mất bản đồ, sẽ dễ khiến bạn không biết lối ra là hướng nào, các Google bot cũng vậy, dẫn đến các link bài viết sẽ mất thứ hạng cũng như mất hẳn hoàn toàn trên trang tìm kiếm Google.
Nguyên nhân gây ra lỗi XML declaration allowed only at the start of the document
Nếu bạn view-source link sitemap, bạn sẽ phát hiện 1 điều khá thú vị đó là trước cặp thẻ <?xml version=”1.0″ encoding=”UTF-8″?> sẽ xuất hiện khoảng trắng hoặc xuống 1 dòng, điều này là do 1 trong các file .PHP của bạn, mà quan trọng nhất đó là 2 file: wp-config.php và function.php có chứa các lỗi xuống dòng hoặc khoảng trắng ở trước hoặc sau cặp thẻ <?php….?>.
Vậy khắc phục lỗi XML declaration allowed only at the start of the document trong plugin Rank Math cũng như SEO Yoast như thế nào? Sau đây là các bước mà Danh và team code đã thực hiện:
Hướng dẫn các bước khắc phục lỗi XML declaration allowed only at the start of the document
Bước quan trọng nhất là tắt hết các plugin cũng như phần mềm tạo cache, vì khi bạn sửa lỗi mà web hay server vẫn còn lưu cache thì bạn khó lòng biết được lỗi đã được khắc phục hay chưa.
Sau đây là các bước sửa lỗi XML declaration allowed only at the start of the document
Bước 1: Kiểm tra các file .PHP và các plugin,
Bạn vào SSH root của server hoặc hosting và nhập vào dòng lệnh sau sẽ giúp bạn liệt kê các file .PHP có chứa khoảng trắng hoặc xuống dòng trước hoặc sau cặp thẻ <?php….?>:
find . -name “*.php” -type f -size +0 -exec gawk ‘STARTFILE{if ($0 == “”) print FILENAME}’ {} +
Nếu bạn muốn tìm kiếm và in danh sách tất cả các tệp PHP kết thúc bằng một dòng trống tùy ý, hãy SSH vào trang web của bạn và chạy lệnh này trong terminal:
find . -name “*.php” -type f -size +0 -exec gawk ‘FNR==1{if ($0 == “”) print FILENAME}’ {} +
Các lệnh này sẽ giúp thu hẹp các tệp cụ thể chứa các dòng trống tùy ý ở đầu và cuối mỗi tệp. Tuy nhiên, chúng sẽ không tìm thấy bất kỳ dòng nào ở giữa mã. Tuy nhiên, nếu bạn đã thực hiện tất cả các bước trên và vẫn thấy sự cố – thì đó không phải là plugin/theme hoặc mã lõi WordPress – vì vậy ít nhất bạn đã thu hẹp nó xuống một số loại tập lệnh tùy chỉnh.
Sau khi chạy các dòng lệnh trên mà sitemap vẫn báo lỗi thì bước kế tiếp bạn vô hiệu hóa tất cả các plugin, chỉ chừa lại plugin SEO như Rank Math hoặc SEO Yoast.. Nếu còn lỗi thì thực hiện bước kế sau đây:
Bước 2: Vào public_HTML (Nơi chứa toàn bộ source code website)
Đầu tiên, bạn hãy đăng nhập vào Hosting/VPS của bạn. Tiếp đó, bạn di chuyển vào đúng đường dẫn chứa dữ liệu website và tạo mới một File mới và đặt tên là fixe.php
. Sau đó, copy đoạn code sau và dán vào bên trong file mới tạo, tác dụng của đoạn code sau sẽ giúp bạn xóa khoảng trắng cũng như dấu xuống dòng khi thực thi tạo sitemap cho wordpress.
<?php
function fix_sitemap($input) {
$allowed = false;
$found = false;
foreach (headers_list() as $header) {
if (preg_match(“/^content-type:\\s+(text\\/|application\\/((xhtml|atom|rss)\\+xml|xml))/i”, $header)) {
$allowed = true;
}
if (preg_match(“/^content-type:\\s+/i”, $header)) {
$found = true;
}
}
if ($allowed || !$found) {
return preg_replace(“/\\A\\s*/m”, “”, $input);
} else {
return $input;
}
}
ob_start(“fix_sitemap”);
?>
Sau đó vào file index.php thêm vào dòng sau:
include(‘fixe.php’);
Nếu tới đây mà link sitemap vẫn còn lỗi đỏ chét thì bạn vẫn chưa xong việc nhé.
Bước 3: Trong quá trình làm website trở nên đẹp, hoặc thêm chức năng nào đó thì bạn sẽ thêm các đoạn code vào trong file function.php, nếu không khéo, các dòng này sẽ là nguyên nhân tạo ra lỗi XML declaration allowed only at the start of the document. Vậy thì tại bước này, bạn cần thêm các dòng code sau vào trong file function.php, nơi mà bạn đã chỉnh sửa, cập nhật thêm các dòng code:
function fix_rankmath_sitemap_output() {
if (function_exists(‘is_feed’) && is_feed()) {
while (ob_get_level()) {
ob_end_clean();
}
}
}
add_action(‘init’, ‘fix_rankmath_sitemap_output’);function start_output_buffer() {
ob_start();
}
add_action(‘init’, ‘start_output_buffer’);
function clean_output_buffer() {
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
}
add_action(‘init’, ‘clean_output_buffer’);
Sau khi thực hiện bước 3 xong, bạn hãy kiểm tra lại sitemap đã chạy chưa nhé. Danh nghĩ chắc chắn sau khi hoàn thành bước 3 và restart lại host/ server thì sitemap của bạn sẽ ổn định trở lại.Nếu Sitemap hiển thị như bên dưới là bạn đã xử lý thành công rồi nhé.
Chúc các bạn thực hiện thành công.!