Tinh chỉnh và tối ưu file wp-config.php WordPress

wp-config.php là gì?

wp-config.php là file quan trọng của WordPress, wp-config.php chứa thông tin quan trọng như tên người dùng và mật khẩu MySQL, nó cho phép bạn thiết đặt cấu hình làm cầu nối giữa database và code giúp website WordPress của bạn hoạt động chính xác nhất.

Bài viết này sẽ hướng dẫn bạn cách cấu hình wp-config để tăng tính bảo mật và .

wp-config.php nằm ở đâu?

File wp-config.php nằm ở thư mục gốc của website, bạn có thể dễ dàng nhìn thấy file wp-config.php như hình dưới đây.

Bạn mở file này lên sẽ thấy các thông số cấu hình để website của bạn hoạt động.

Tinh chỉnh và tối ưu wp-config.php WordPress

File wp-config.php ngoài cấu hình mặc định như file wp-config-sample.php do WordPress tạo sẵn thì bạn có thể cấu hình hoặc tinh chỉnh tùy theo như cầu và tầm hiểu biết của mình. Dưới đây là 1 số hằng số rất cần thiết để bạn nâng cao bảo mật và

Thay đổi địa chỉ website

Đoạn code này cực kỳ hữu ích nếu như bạn chuyển tên miền A sang B, hoặc gặp các sự cố về chuyển hướng, đoạn code này giúp WordPress hiểu website Địa chỉ WordPress (URL)Địa chỉ trang web (URL) chính xác và ngăn sự thay đổi url trong phần quản trị website (WP Dashboard) giúp website của bạn an toàn hơn.

// Thay doi url website
define('WP_HOME','https://vutruso.vn/');
define('WP_SITEURL','https://vutruso.vn/');

Tự đông lưu nháp

Theo mặc định, WordPress sẽ tạo nhiều bảng lưu nháp tự động khi bạn soạn thảo. Tính năng này rất hữu ích nhưng nếu lưu quá nhiều bản nháp sẽ làm cho database của bạn phình to ra nhanh chóng vì vậy bạn nên giới hạn các bản nháp được tạo để tối ưu hơn.

# Tang thoi gian tu dong luu moi 120 giay
define( 'AUTOSAVE_INTERVAL', 120 );

# Gioi han save revisions, chi de 8 bang
define( 'WP_POST_REVISIONS', 8 );

Bắt buộc kết nối https vào khu vực quản trị

Tính năng này hữu ích khi bạn muốn bảo mật thông tin đăng nhập, mật khẩu và cookie sẽ được mã hóa giúp website bạn an toàn hơn. Tính năng này sẽ cực kỳ hữu ích cho các website có nhiều thành viên, tác giả hoạt động.

# Bat buoc ket noi HTTPS
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Tắt tính năng chỉnh sửa file / cập nhật theme, plugin

Đoạn code này khi bạn thêm vào sẽ tắt tính năng chỉnh sửa theme hoặc plugin trong khu vực quản trị website WordPress (WP Dashboard)

# Tat tinh nang chinh sua theme/plugin
define( 'DISALLOW_FILE_EDIT', true );

Ngoài ra bạn có thể thêm đoạn code phía dưới đây để vô hiệu hóa việc cập nhật theme hoặc plugin trong phần quản trị website, bạn sẽ không nhìn thấy nút cập nhật theme, hoặc plugin trong phần WP-ADMIN

# Vo hieu hoa tinh nang update theme/plugin
define( 'DISALLOW_FILE_MODS', true );

Tăng bộ nhớ PHP cho WordPress

Tùy chọn này cho phép bạn chỉ định bộ nhớ tối đa mà PHP có thể sử dụng. Cài đặt này rất quan trọng mà bạn nên thêm vào file wp-config.php, nếu WP_MEMORY_LIMIT quá thấp có thể bạn sẽ gặp phải thông báo như: “Allowed memory size of bytes exhausted”. WP_MEMORY_LIMIT mặc định của WordPress là 64MB bạn có thể tùy chỉnh tăng lên 128MB hoặc 512MB bằng đoạn code sau:

# Tang bo nho gioi han cho PHP
define( 'WP_MEMORY_LIMIT', '128M' );

Tự động sửa lỗi WordPress

Nếu bạn muốn tối ưu cơ sở dữ liệu hoặc sửa lỗi cơ sở dữ liệu có thể thêm đoạn code dưới vào wp-config.php

define( 'WP_ALLOW_REPAIR', true );

Sau khi thêm vào bạn truy cập web theo đường dẫn để thực hiện sửa lỗi và tối ưu cơ sở dữ liệu WordPress

tenmiencuaban.com/wp-admin/maint/repair.php

Tự động xóa bài viết trong thùng rác

Đoạn code này giúp xóa các bài viết trong thùng rác sau x ngày mà bạn muốn, bạn có thể cân nhắc bật tính năng này

# Xoa bai trong thung rac sau 7 ngay
define( 'EMPTY_TRASH_DAYS', 7 );

Chặn các yêu cầu – API CALL

Đây là 1 tính năng mình nghĩ khá hay, chặn các yêu cầu api bên ngoài sẽ giúp phần quản trị của bạn được nhanh hơn, bởi không phải chờ các yêu cầu từ host của bên thứ 3, tất nhiên nếu bạn sử dụng 1 số plugin bản quyền và họ lưu trữ plugin trên hosting của họ thì bạn nên bật domain lên để có thể cập nhật plugin, theme nếu chúng có bản mới.

Đoạn code này cơ bản như sau

// Chặn toàn bộ API CALL
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
// Cho phép request từ wordpress.org hoặc 1 tên miền nào đó bạn muốn
define( 'WP_ACCESSIBLE_HOSTS', '*.wordpress.org, vutruso.com' );

Thay đổi Unique Keys và Salts

Nếu các khóa bảo mật WordPress chưa được định cấu hình trong file wp-config.php có dạng như sau:

Unique Keys và Salts có rất nhiều ý nghĩa, có lẽ mình sẽ trình bày trong 1 bài viết chi tiết, tóm lại bạn nên thay đổi Unique Keys và Salts để giúp tăng cường bảo mật cho website của bạn.

Để thay đổi Unique Keys và Salts bạn chỉ cần truy cập vào đường dẫn sau: https://api.wordpress.org/secret-key/1.1/salt/ sau đó copy Unique Keys và Salts do chính WordPress tự động tạo ra và dán thay thế vào đoạn code cũ trong file wp-config.php (mỗi lần reload đều có mã mới và không trùng lặp)

define('AUTH_KEY',         '-R6A1|wIh5.2rotoc~{}(7+Gc.{)v{K/H(SgX&^^<O&m0q*(-eyeDAxwC>~728A&');
define('SECURE_AUTH_KEY',  '6<F-F+o^$#eZ|+1L|~GmVTr/qkBwzSXX[18Zr1o__$<Z@ynr-{jQw%XadBYQ>W|;');
define('LOGGED_IN_KEY',    'k,V&)k*Zrhb5,R.i0.`F#d&#*(z)(NpeQI8dE(Sc0POk}wkd@;OO2[+LLJazoW9{');
define('NONCE_KEY',        'i)DSG^IFX-1u%YjM9d-y/-wVE%|Q6Yd?2&WrYn|OUBX/aTq8X@!^mu5E+,_Oc6Dn');
define('AUTH_SALT',        'M&~&qQpe9JCCpzpo{{p){amDzho9#yrg[n|K#Bj-$NZHgF%Jm$gxEu-vPZs6&T-!');
define('SECURE_AUTH_SALT', '>t_k.2w7jm4D%?&t2ZY|>3%K9,oOAT(Ev(rC~&;pHNJWJ2z&o|MFvWob~bN??4-N');
define('LOGGED_IN_SALT',   'p>J4A#-~`dx)eX>ejztK@xqEX8c(&Q|oO]Oc}g|bgTr3r!iWS+PklI(2c)/37vp`');
define('NONCE_SALT',       'Hs0K<li#R[_@x|A--S#tpt)^atbv{;LIshCeI`l*TNcNH|~;2B<=[KmW8nG%-HWL');

Sau khi thay đổi secret key bạn sẽ bị out ra phần quản trị, đừng lo lắng cái này bình thường vì WordPress sẽ xóa hết các cookie đăng nhập cũ và buộc bạn phải đăng nhập lại)

Bật debug

Mình có viết 1 bài khá chi tiết cách để bật debug trong WordPress, bạn có thể xem qua bài viết đó tại đây hoặc bạn có thể thêm đoạn code sau vào wp-config.php là có thể bật debug lên.

# Enable debug
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true);
define( 'WP_DEBUG_DISPLAY', true);
define( 'SAVEQUERIES', true);

Tự động cập nhật phiên bản WordPress

Để tự động cập nhật các phiên bản chính mới của WordPres, bạn có thể thêm đoạn này vào wp-config.php

# Tu dong cap nhat WordPress
define('WP_AUTO_UPDATE_CORE', true);

Bạn nên lưu ý tính năng này, vì mỗi lần cập nhật có khá nhiều thay đổi ở wp core, cho nên hãy cân nhắc để kiểm soát được lỗi và các vấn đề phát sinh khi tự động nâng cấp WordPress.

Bạn có thể tắt tự động update bằng cách thay đổi true thành false là xong

# Tat tu dong update WordPress
define( 'WP_AUTO_UPDATE_CORE', false );

Chuyển file wp-config.php sang thư mục khác

Để bảo mật hơn cho website, bạn có thể di chuyển file cấu hình WordPress sang thư mục bí mật nào đó tùy bạn bằng cách thêm vào đoạn code sau:

<?php if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');
 
require_once(ABSPATH . '../thu-muc-tuy-chinh/wp-config.php');

Nhớ là bạn phải di chuyển file wp-config.php ra khỏi thư mục gốc và thay đổi lại đoạn code trên cho phù hợp.

Bật redis cache

Object cache như redis cache sẽ giúp website của bạn tăng tốc rất nhiều, nếu hosting của bạn hỗ trợ redis cache bạn hãy cài plugin Redis cache và thêm đoạn code sau vào file wp-config.php và sửa lại thông tin là chúng sẽ hoạt động như ý muốn.

/** Redis Cache**/
define('WP_REDIS_SCHEME', 'unix');
define('WP_REDIS_PATH', '/home/vozbqrlr/redis/redis.sock');
define('WP_REDIS_CLIENT', 'pecl');
define('WP_CACHE_KEY_SALT', 'vutruso.vn');

Tắt WP Cron

Mỗi khi khách truy cập vào trang web của bạn, Cron sẽ được chạy. Cron sẽ kích hoạt tác vụ như bài đăng đã lên lịch, xóa bộ nhớ cache đã hết hạn, cập nhật danh sách số lượng bình luận và nhiều lợi ích khác. Nếu bạn thấy tính năng này không cần thiết và muốn vô hiệu hóa thì có thể sử dụng đoạn code dưới đây:

# tắt WP-Cron
define( 'DISABLE_WP_CRON', true );

Tuy nhiên nếu tắt tính năng này đi thì bạn sẽ gặp phải các vấn đề như lên lịch tự động đăng bài, tự động preload cache hoặc các hoạt động được lên lịch trước …

Vì vậy bạn có thể chạy lịch trình bằng tạo Cron job ở linux’s (VPS của bạn) hoặc cài đặt ở Cpanel (Đăng nhập vào cPanel. Trong phần Nâng cao, nhấp vào Cron Jobs)

Trong phần Thêm Công việc Cron Mới, bạn có thể chọn các thời gian được gợi ý đề xuất, chẳng hạn như hai lần một giờ hoặc một lần mỗi tuần. Và nhà cung cấp dịch vụ lưu trữ của bạn rất có thể có giới hạn về tần suất chạy cron này vì sẽ có ảnh hưởng đến máy chủ của nhà cung cấp.

Bạn hãy thêm lệnh sau vào. Và thay thế https://domain.com bằng tên miền của bạn. Lệnh này có thể thay đổi một chút dựa trên cách cấu hình máy chủ của bạn. Sau đó nhấp vào Add New Cron Job để lưu lại.

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Xem video ngắn cách cài đặt Cron Job trên Cpanel

Mặc định cron gửi email cho người thực thi cron job, nếu bạn muốn tắt chức năng gửi email này đi thì hãy thêm đoạn sau vào cuối dòng >/dev/null 2>&1 có nghĩa là khi cron thực thi, bất cứ output nào stderr hay stdout đều được gửi đến hố đen /dev/null vì gửi đến hố đen cho nên output cũng là null và cron sẽ không thực thi việc gửi email đi.

Chú thích: Phần >/dev/null 2>&1

  • > chuyển hướng – chuyển luồng dữ liệu đi đâu đó
  • >> chuyển hướng – giống như trên nhưng sẽ cộng dồn vào đích nó đến
  • /dev/null trong linux nó giống như một cái hố đen, nơi mà mọi dữ liệu gửi đến đều sẽ bị loại bỏ
  • 2 là ký hiệu chỉ đích đến Standard Error (stderr)
  • 1 là ký hiệu chỉ đích đến Standard Out (stdout)
  • & là ký hiệu kiểu A or B

Tắt WP Cron cũng có 1 số lợi ích tuy nhiên bạn nên cân nhắc vì nếu sử dụng vì 1 số plugin tối ưu website, các plugin lên lịch tự động thường viết theo WP Cron của WordPress, nếu bạn tắt và cài đặt Cron như hướng dẫn trên các plugin đều hoạt động không tốt so với WP Cron mặc định (các plugin sẽ thông báo lỗi hoặc cảnh báo)

Ngoài cách tắt WP Cron bạn có thể giới hạn thời gian chạy lại bằng đoạn code

# WP Cron không chạy quá 60 lan moi giay
define( 'WP_CRON_LOCK_TIMEOUT', 60 );

Kết luận

Ở trên là các hằng số định nghĩa trong file wp-config.php mà bạn có thể xem và áp dụng nếu cảm thấy phù hợp, phía dưới đây là 1 file tổng hợp mình up lên để lưu trữ, bạn có thể note để xem và copy cho tiện.

Chúc bạn thành công.

Tiến Dũng Đào là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin.Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan