Home / Operating System / Linux / Tùy chỉnh rewrite URL cho WordPress trong NGINX

Tùy chỉnh rewrite URL cho WordPress trong NGINX

Ai cũng biết, máy chủ Apache là loại máy chủ phổ biến nhất để sử dụng vì tính đơn giản của nó, lại được nhiều cộng đồng hỗ trợ. Tuy nhiên, có một loại máy chủ web khác có hiệu năng tốt hơn Apache và cũng hoạt động rất tốt là NGINX, đó là lý do tại sao mà Thach Pham Blog đã giới thiệu Script tự cài đặt NGINX trên VPS của Servertut, bản thân Thach Pham Blog cũng đang sử dụng NGINX nên bạn có thể thấy hiệu suất của nó thật đáng kinh ngạc.

Thế nhưng có một điều rất quan ngại là NGINX không sử dụng mod_rewrite giống như Apache mà nó sử dụng một số câu lệnh riêng của nó đó để thiết lập rewrite đường dẫn trên site. Điều đó có nghĩa là, nếu bạn cần làm gì trong WordPress mà đụng tới file .htaccess thì sẽ không làm được trên NGINX. Vậy chúng ta phải làm sao để phương thức rewrite hoạt động trên NGINX?

 

Tất nhiên, chúng ta sẽ sử dụng những câu lệnh của NGINX để rewrite đường dẫn bằng cách viết thêm vào file cấu hình nginx của website đang chạy để cho nó rewrite giống như chèn các câu lệnh vào file .htaccess ở Apache. Trong bài này mình sẽ hướng dẫn một số cách để bổ sung một vài tính năng rewrite URL cho WordPress trong NGINX.

1. Chuẩn bị đồ nghề:

  • Công cụ chuyển đổi htaccess trực tuyến : http://www.anilcetin.com
  • Vào Settings ⇨ Permalink, chọn định dạng URL theo ý bạn. Ở hình minh họa mình để là /%category%/%postname%.html

Tùy chỉnh permalinks cho WordPress

Sau khi ấn Save, WordPress sẽ cho bạn một đoạn code :

Đoạn code đặt vào file .htaccess

Copy đoạn code đó đưa vào công cụ chuyển đổi. Ta sẽ được như sau :

if (!-f $request_filename){
set $rule_1 1$rule_1;
}
if (!-d $request_filename){
set $rule_1 2$rule_1;
}
if ($rule_1 = "21"){
rewrite /. /index.php last;
}

Bước 2. Chèn code rewrite vào NGINX

Các bạn mở file cấu hình NGINX dành cho domain của bạn (Nếu bạn dùng script của Server tut thì đường dẫn là /etc/nginx/conf.d/domain.com.conf). Sau đó tìm đoạn code như dưới đây

location / {
try_files $uri $uri/ /index.php?$args;
}

Sau đó thêm đoạn code mà ta đã được khi chuyển đổi ở bước 1 ngay phía dưới, nó sẽ thành như thế này

location / {
try_files $uri $uri/ /index.php?$args;
if (!-f $request_filename){
set $rule_1 1$rule_1;
}
if (!-d $request_filename){
set $rule_1 2$rule_1;
}
if ($rule_1 = "21"){
rewrite /. /index.php last;
}
}

Lưu lại file và khởi động lại NGINX với lệnh service nginx restart. Và như thế là xong.

Lưu ý thêm

Đối với website ở thư mục con

Nếu bạn không để WordPress ở thư mục gốc mà đặt nó vào một thư mục riêng kiểu như domain.com/wordpress thì bạn phải edit lại dòng

location / {
try_files $uri $uri/ /index.php?$args;
}

thành

location /thư_mục_chứa_wp/ {
try_files $uri $uri/ /thư_mục_chứa_wp/index.php?$args;
}

Đối với WP Better Security

Chắc nhiều bạn dùng Plugin này để bảo mật Site Wp của mình.
Nó có hỗ trợ Nginx và sẽ tự tạo code rewrite cho các bạn (ko phải chuyển đổi :D). Cách chèn code rewrite cũng tương tự trên thôi. Chèn vào sau đoạn code mà bạn đã làm ở trên

Chèn code rewrite của Better WP Security

Nếu bạn sử dụng chức năng Hide của nó thì có một lưu ý là nó không hoàn toàn đúng với những bạn đang để blog dạng: domain.com/thư_mục_chứa_wp/. Cần phải sửa đổi một chút!

Đây là đoạn rewrite mà nó cung cấp cho mình khi cài

if ($rule_2 = 1) { rewrite ^/thư_mục_chứa_wp/thư_mục_giấu_admin/?$ /thư_mục_chứa_wp/wp-login.php?wmer06f5apkqt3ws1u3ey&redirect_to=/wp-admin/ redirect; }

Chúng ta sẽ sửa lại thành

if ($rule_2 = 1) { rewrite ^/thư_mục_chứa_wp/thư_mục_giấu_admin/?$ /thư_mục_chứa_wp/wp-login.php?wmer06f5apkqt3ws1u3ey&redirect_to=/thư_mục_chứa_wp/wp-admin/ redirect; }

Cấu hình khác cho WordPress

Nếu bạn cần cấu hình thêm cho NGINX để hoạt động tốt với WordPress, bạn có thể tham khảo thêm một vài tut từ trang chủ của NGINX tại đây nhé.

Dĩ nhiên, sau khi làm xong thì gõ lệnh service nginx restart để khởi động lại máy chủ NGINX.

Trên đó là một vài kinh nghiệm nhỏ của mình sau nhiều ngày mần mò cấu hình WordPress trên NGINX, hy vọng nó sẽ giúp ích cho những ai thích dùng NGINX thay vì Apache truyền thống.

Print Friendly

About dongpolice

Check Also

Xây dựng Firewall cho hệ thống

Xây dựng Rirewall cho hệ thống Giải pháp: sử dụng iptables của Linux. Cách làm: …