Tìm kiếm

Hiển thị các bài đăng có nhãn Website. Hiển thị tất cả bài đăng

Thứ Ba, 6 tháng 1, 2026

thumbnail

Gỡ lỗi trong WordPress

Gỡ lỗi mã PHP là một phần của bất kỳ dự án nào, nhưng WordPress đi kèm với các hệ thống gỡ lỗi cụ thể được thiết kế để đơn giản hóa quy trình cũng như chuẩn hóa mã trên toàn bộ lõi, plugin và theme. Trang này mô tả các công cụ gỡ lỗi khác nhau có sẵn trong WordPress và cách để bạn làm việc hiệu quả hơn khi lập trình, cũng như nâng cao chất lượng và khả năng tương tác tổng thể của mã.

Gỡ lỗi trong WordPress


Đối với những người không phải lập trình viên hoặc người dùng thông thường, các tùy chọn này có thể được sử dụng để hiển thị thông tin chi tiết về lỗi.

LƯU Ý : Trước khi thực hiện bất kỳ thay đổi nào đối với trang web của bạn, hãy đảm bảo rằng bạn đã sử dụng môi trường thử nghiệm hoặc đã sao lưu trang web của mình một cách thích hợp.

Ví dụ về file wp-config.php dùng để gỡ lỗi

Đoạn mã sau, được chèn vào tệp wp-config.php của bạn , sẽ ghi lại tất cả các lỗi, thông báo và cảnh báo vào một tệp có tên debug.logtrong wp-contentthư mục đó. Nó cũng sẽ ẩn các lỗi để chúng không làm gián đoạn quá trình tạo trang.

// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );

LƯU Ý : Bạn phải chèn đoạn mã này TRƯỚC /* That's all, stop editing! Happy blogging. */ trong tệp wp-config.php .

WP_DEBUG

WP_DEBUGlà một hằng số PHP (một biến toàn cục cố định) có thể được sử dụng để kích hoạt chế độ "gỡ lỗi" trong toàn bộ WordPress. Theo mặc định, nó được coi là false, và thường được đặt thành true trong tệp wp-config.php trên các bản sao WordPress dành cho nhà phát triển.

// This enables debugging.
define( 'WP_DEBUG', true );
// This disables debugging.  
define( 'WP_DEBUG', false );

Lưu ý : Các giá trị true`and` falsetrong ví dụ không được bao quanh bởi dấu nháy đơn (') vì chúng là các giá trị boolean (đúng/sai). Nếu bạn đặt các hằng số thành `true` 'false', chúng sẽ được hiểu là đúng vì dấu nháy đơn biến nó thành chuỗi chứ không phải là boolean.

Không nên sử dụng WP_DEBUGcác công cụ gỡ lỗi này trên các trang web đang hoạt động; chúng chỉ dành cho việc kiểm thử cục bộ và cài đặt thử nghiệm.

Lỗi, cảnh báo và thông báo PHP

Việc kích hoạt tùy chọn này WP_DEBUGsẽ hiển thị tất cả các lỗi, thông báo và cảnh báo của PHP. Điều này có thể làm thay đổi hành vi mặc định của PHP, vốn chỉ hiển thị các lỗi nghiêm trọng hoặc màn hình trắng khi xảy ra lỗi.

Việc hiển thị tất cả các thông báo và cảnh báo PHP thường dẫn đến các thông báo lỗi cho những thứ dường như không bị hỏng, nhưng lại không tuân theo các quy ước xác thực dữ liệu thích hợp trong PHP. Những cảnh báo này rất dễ khắc phục một khi đã xác định được đoạn mã liên quan, và mã kết quả hầu như luôn ít bị lỗi hơn và dễ bảo trì hơn.

Gỡ lỗi PHP tùy chỉnh

Nếu cần ghi nhật ký thông tin không phải lỗi để phục vụ mục đích gỡ lỗi, PHP cung cấp error_loghàm này. Tuy nhiên, phương pháp này không cung cấp định dạng đầu ra đúng cách theo mặc định.

Để giải quyết vấn đề này, bạn có thể thêm một hàm khác vào trang web của mình để xử lý định dạng, bằng cách tạo một plugin tùy chỉnh hoặc sử dụng một đoạn mã với một số plugin đoạn mã . Hàm này sẽ hoạt động như một lớp bao bọc để error_logđịnh print_rdạng mảng và đối tượng một cách chính xác trước khi ghi nhật ký chúng.

Dưới đây là một ví dụ về hàm cần WP_DEBUGđược kích hoạt.

function write_log( $data ) {
    if ( true === WP_DEBUG ) {
        if ( is_array( $data ) || is_object( $data ) ) {
            error_log( print_r( $data, true ) );
        } else {
            error_log( $data );
        }
    }
}

Ví dụ sử dụng:

write_log( 'DEBUG TEXT' );
write_log( $variable );

Lưu ý : Không nên thêm mã tùy chỉnh như ví dụ trên functions.phpđể tránh các vấn đề về bảo trì, bảo mật, hiệu năng, khả năng tương thích và tổ chức mã.

Các hàm và đối số đã lỗi thời

Việc kích hoạt tính năng này WP_DEBUGcũng sẽ hiển thị thông báo về các hàm và đối số đã lỗi thời trong WordPress đang được sử dụng trên trang web của bạn. Đây là các hàm hoặc đối số hàm chưa bị xóa khỏi mã nguồn chính, nhưng dự kiến ​​sẽ bị xóa trong tương lai gần. Thông báo lỗi thời thường chỉ ra hàm mới nên được sử dụng thay thế.

WP_DEBUG_LOG

WP_DEBUG_LOGĐây là một công cụ bổ trợ cho WP_DEBUG, giúp lưu tất cả các lỗi vào một debug.logtệp nhật ký. Điều này hữu ích nếu bạn muốn xem lại tất cả các thông báo sau này hoặc cần xem các thông báo được tạo ra ngoài màn hình (ví dụ: trong quá trình yêu cầu hoặc chạy AJAX wp-cron).

Lưu ý rằng điều này cho phép bạn ghi vào tệp nhật ký bằng error_log()chức năng tích hợp sẵn của PHP, điều này có thể hữu ích, ví dụ như khi gỡ lỗi các sự kiện Ajax.

Khi được đặt thành true, nhật ký sẽ được lưu vào debug.logthư mục nội dung (thường là wp-content/debug.log) trong hệ thống tệp của trang web. Ngoài ra, bạn có thể đặt nó thành một đường dẫn tệp hợp lệ để lưu tệp ở nơi khác.

define( 'WP_DEBUG_LOG', true );

-hoặc-

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Lưu ý : để WP_DEBUG_LOGthực hiện bất kỳ thao tác nào, WP_DEBUGcần phải bật (true). Hãy nhớ rằng, bạn có thể tắt WP_DEBUG_DISPLAYđộc lập.

WP_DEBUG_DISPLAY

WP_DEBUG_DISPLAYlà một thành phần bổ trợ khác WP_DEBUGkiểm soát việc hiển thị thông báo gỡ lỗi bên trong mã HTML của trang hay không. Mặc định là 'true', nghĩa là hiển thị lỗi và cảnh báo ngay khi chúng được tạo ra. Đặt thành 'false' sẽ ẩn tất cả lỗi. Thành phần này nên được sử dụng cùng với WP_DEBUG_LOGđể có thể xem lại lỗi sau này.

define( 'WP_DEBUG_DISPLAY', false );

Lưu ý : để WP_DEBUG_DISPLAYthực hiện bất kỳ thao tác nào, WP_DEBUGcần phải bật (true). Hãy nhớ rằng, bạn có thể điều khiển WP_DEBUG_LOGđộc lập.

SCRIPT_DEBUG

SCRIPT_DEBUGlà một hằng số liên quan sẽ buộc WordPress sử dụng các phiên bản “dev” của các tệp CSS và JavaScript cốt lõi thay vì các phiên bản thu nhỏ thường được tải. Điều này hữu ích khi bạn đang thử nghiệm các sửa đổi đối với bất kỳ tệp .jshoặc .cssthư viện tích hợp nào. Giá trị mặc định là false.

define( 'SCRIPT_DEBUG', true );

LƯU TRẠNG THÁI

Định nghĩa này SAVEQUERIESlưu các truy vấn cơ sở dữ liệu vào một mảng, sau đó có thể hiển thị để giúp phân tích các truy vấn đó. Khi hằng số được đặt thành true, nó sẽ khiến mỗi truy vấn được lưu lại cùng với thời gian thực thi và hàm đã gọi nó.

define( 'SAVEQUERIES', true );

Mảng được lưu trữ trong biến toàn cục $wpdb->queries.

LƯU Ý : Việc này sẽ ảnh hưởng đến hiệu suất của trang web, vì vậy hãy đảm bảo tắt chức năng này khi bạn không đang gỡ lỗi.

Gỡ lỗi plugin

Có rất nhiều plugin gỡ lỗi cho WordPress hiển thị nhiều thông tin hơn về hoạt động bên trong, cho một thành phần cụ thể hoặc tổng quát.

Ví dụ, Debug Bar thêm một menu gỡ lỗi vào thanh quản trị hiển thị thông tin truy vấn, bộ nhớ cache và các thông tin gỡ lỗi hữu ích khác. Khi WP_DEBUG được bật, nó cũng theo dõi các cảnh báo và thông báo PHP để giúp bạn dễ dàng tìm thấy chúng hơn.

Thứ Tư, 10 tháng 1, 2024

thumbnail

File .htaccess là gì, Hướng dẫn cách dùng file .htaccess toàn tập

 

File .htaccess là gì, Hướng dẫn cách dùng file .htaccess toàn tập

htaccess là gì

Tập tin .htaccess (hypertext access) là một file có ở thư mục gốc của các hostting và do apache quản lý, cấp quyền. File .htaccess có thể điều khiển, cấu hình được nhiều thứ với đa dạng các thông số, nó có thể thay đổi được các giá trị được set mặc định của apache.

Nếu được khai thác tốt thì .htaccess sẽ giúp được bạn rất nhiều việc mà tốn rất ít công sức đơn giản chi vài dòng lệnh là được. Cách thức mà bạn sử file .htaccess cũng thật đơn giản cứ mở bằng một trình soạn thảo nào đó chỉnh sửa xong save as lại với thành file .htaccess là xong.

dịch vụ đăng ký Hosting WordPress Mắt Bão

Bỏ hoặc thêm www vào domain:

WWW lúc đầu khi nhìn vào thì cho thấy domain mình như là một subdomain, bạn nhìn website WWW thường là website công ty, mang một phong cách chuyên nghiệp, còn không có WWW thấy nó như một blog, các nhân … tuy nhiên WWW nó mang một ý nghĩa sâu xa hơn nhiều, và sẽ ảnh hưởng đến SEO nên bạn quan tâm. Ở đây mình chỉ giới thiệu cách để bạn theme vào xóa www trong URL. Nếu bạn quan tâm SEO, bạn có thể tìm hiểu SEO là gì?

// Thêm WWW vào URL

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]

RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

// Không theme WWW vào URL

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^domain.com$ [NC]

RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

Redirect đến trang thông báo lỗi riêng với file .htaccess:

Trong web thì có nhiều lỗi như: 401, 403, 404, 500 … là các lỗi phổ biến, nếu không redirect nó sẽ trả về trình duyệt của người dùng một thông báo rất xấu xí, không chuyên nghiệp và tạo cảm giác khó chịu khi bị lỗi, bạn có thể dùng file .htaccess để chỉnh redirect đến trang thông báo lỗi mà bạn đã định sẳn.

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

Cài đặt 301 Redirect có lợi cho SEO

301 Redirect là vấn đề mà mình đã đề cập ở bài trước tối ưu seo với 301 Redirect, đây là phương pháp được xem là tối ưu nhất cho việc chuyển tên miền hay chuyển file nào đó mà không mất về lượng truy cập cũng như về kết quả tìm kiếm trên google, thao tác 301 Redirect trên file .htaccess như sau:

// 1 Trang

Redirect 301 /old/old.htm http://domain.com/new.htm

// chuyển domain

RewriteEngine On

RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L

Hotlink chính là link trực tiếp đến trang web của người khác lấy các file về sử dụng trên website, có thể là file hình ảnh, video, tài liệu … Hotlink là một giải pháp cho những blog tạm, không chắc chắn và những ai hay đi copy bài người viết của các trang web khác. Hotlink sẽ làm tốn một lượng băng thông rất lớn vì các site khác lấy file trực tiếp từ host của bạn. Sau đây là cách mà bạn ngăn chặn việc đó bằng file .htaccess

Options +FollowSymlinks

#No hotlink

RewriteEngine On

RewriteCond %{HTTP_REFERER}!^$

RewriteCond %{HTTP_REFERER}!^http://(www.)?domain.com/[nc]

RewriteRule .*.(gif|jpg|png)$ http://domain.com/images/nohotlink.gif[nc]

Bỏ đuôi mở rộng của file web “.php”:

Khi duyệt website muốn địa chỉ URL phải đẹp, chuyên nghiệp, và đôi lúc muốn che giấu công nghệ web đang sử dụng cũng có thể áp dụng phương pháp này. bạn vào file .htaccess gõ mã lệnh như sau:

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

Chuyển .php sang .html trong url:

Công việc này cũng khá đơn giản với file cấu hình .htaccess này, có một số lý do khiến bạn làm công việc này, đó là bạn muốn bảo mật, đuôi .html đẹp hơn .php, rồi để tối ưu SEO … bạn làm như sau:

RewriteRule ^(.*).html$ $1.php [R=301,L]

Thêm dấu “/” vào cuối URL:

Mã nguồn WordPress khi bạn tối ưu URL thì bạn sẽ thấy được có dấu “/” ở sau mỗi URL, điều đó là sẽ tốt cho SEO. Tránh bị các công cụ tìm kiếm cho là trùng lắp nội dung.

#Thêm / vào cuối URL

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !#

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

Cấm IP truy cập vào site:

Có đôi lúc bạn muốn cấm hẳn một IP nào đó không được truy cập vào site của bạn vì lý do nào đó như: spam quá mức, thường xuyên viết comment không đúng qui định, thành phần cá biệt … trong trường hợp này can thiệp vào tập tin .htaccess bạn cũng có thể làm được việc này.

allow from all

deny from 192.168.1.123

deny from 192.168

Bảo vệ file trong host dùng .htaccess:

Bạn muốn tăng sự bảo mật cho trang web của bạn bằng cách bảo vệ các file, không cho phép truy cập trực tiếp vào các file trong host bạn có thể sử dụng cách sau, và cách này sẽ trả về lỗi 403 cho trình duyệt.

# Bảo vệ file dùng .htaccess

<files .htaccess="">

order allow,deny

deny from all

</files>

Đặt password cho thư mục và file:

Trong một số trường hợp bạn muốn đặt mật khẩu cho file và thư mục, tránh sự truy cập trái phép của người khác bạn có thể dùng file .htaccess và gõ mã lệnh như sau:

#Đặt Pass cho thư mục

resides

AuthType basic

AuthName "Thư mục này đã được bảo vệ"

AuthUserFile /home/path/.htpasswd

AuthGroupFile /dev/null

Require valid-user

# Đặt Pass cho file

<files secure.php="">

AuthType Basic

AuthName "Prompt"

AuthUserFile /home/path/.htpasswd

Require valid-user

</files>

Chuyển dấu “_” thành “-” trong URL:

Dấu _ hay dấu – thì đều là dấu phân cách để hiểu được và phân biệt giữa chữ này với chữ kia tuy nhiên người xem lại thích dấu “-“hơn vì nó dễ nhìn và có cảm giác phân cách hơn dấu kia nhìn giống như một chuổi dài liên tục, mặt khác đâu “-” có thể sẽ có lợi cho SEO. bạn chuyển đổi bằng cách sau:

Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteRule !.(html|php)$ - [S=4]

RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]

RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]

RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]

RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]

RewriteCond %{ENV:uscor} ^Yes$

RewriteRule (.*) http://domain.com/$1 [R=301,L]

Set lại trang mặc định:

Hostting nhận trang mặc định chạy lên khi không rõ địa chỉ URL của trang đích thực là index.php, index.html … bây giờ bạn muốn chạy mặc định là trang khác ví dụ như trang info.html bạn có thể cài đặt trong file .htaccess như sau:

DirectoryIndex info.html

Bật tính năng nén file Gzip:

Bạn có thể bật chức năng này lên, và rất quan trọng trong việc backup dữ liệu, mục đích để tải dữ liệu được nhanh chóng và tranh mất mát. bạn vào trong file .htaccess và làm như sau:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

14. B t category  URL:

Hôm trước ở bài trước mình có chia sẻ blugin xóa từ category ở URL của website WordPress. Hôm nay chúng ta có thêm một cách nữa, là không phải dùng plugin mà có thể tương tác trực tiếp lên file .htaccess.

RewriteRule ^category/(.+)$ http://domain.com/$1 [R=301,L]

Không cho truy cập file wp-config.php của WordPress:

Một ứng dụng nhỏ mà rất quan trọng trong việc bảo mật file đã đề cập ở trên. Trong WordPress bạn cũng biết là file wp-config.php rất quan trọng chứa thông số về database username, pass… mình sẽ cấp không cho truy cập trang bằng cách như sau:

# Bảo mật file wpconfig.php

<files wp-config.php>

order allow,deny

deny from all

</files>

16. Gii hn file Upload:

Công việc này cũng quan trọng trong việc tiết kiệm tài nguyên website của bạn, việc giới hạn này sẽ làm cho web nhẹ nhàng hơn, load nhanh hơn … thêm vào trong file. htaccess đoạn code sau:

# Giới hạn đến 10mb

LimitRequestBody 10240000

Xóa category trong đường dẫn website WordPress

Khi thực hiện dịch vụ SEO trên các web wordpress nếu bỏ /category hoặc /danh-muc trên url category rất có lợi. Lúc này bạn đẩy tên danh mục về gần root.

Có nhiều cách để xóa trong đó htaccess là 1 trong những cách hiệu quả, bạn có thể chèn đoạn mã sau:

RewriteRule ^category/(.+)$ http://yoursite.com/$1 [R=301,L]

Dùng .htaccess redirect tên miền cũ qua tên miền mới

Khi bạn quyết định chuyển 1 website qua 1 tên miền mới thì 1 trong những điềuquan trọng là phải điều hướng (redirect) tên miền cũ qua tên miền mới.

Nếu điều hướng đúng thì các trang ở tên miền cũ cũng sẽ được điều hướng qua đúng trang tương ứng trên tên miền mới. Nếu redirect sai thì đồng nghĩa bạn sẽ mất rất nhiều lượng truy cập cũng như rớt hàng trên công cụ tìm kiếm.

Bạn nên dùng cách điều hướng sau trong trường hợp bạn không thay đổi cấu trúc web (các trang và links) mà chi đơn giản chuyển đổi tên miền. Với cách này các bạn chỉ cần đơn gian thêm dòng code này vào file .htaccess nằm trong root của domain cũ.

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.olddomain.com$
  RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]
</IfModule>

Redirect http qua https bằng .htaccess Đối với Linux & cPanel

Các bạn thêm đoạn code bên dưới vào file htaccess

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Lưu ý không được có 2 dòng “RewriteEngine On” trong file htaccess

Xem thêm:


Được tạo bởi Blogger.

Liên hệ Công ty cổ phần ANY Việt Nam

Liên hệ Công ty cổ phần ANY Việt Nam
Liên hệ Công ty cổ phần ANY Việt Nam