Nginx Rewrite URL cho WordPress và Laravel

Mình setup VPS sử dụng Nginx. Cảm thấy chạy mượt hơn Apache. Thấy hứng thú và vui hơn nhiều. Nhưng gặp phải rắc rối về vấn đề Nginx Rewrite URL WordPress cũng như Rewrite URL Laravel. Mình đã tham khảo các bài hướng dẫn trên mạng và đã thành công, mình xin chia sẽ lại với các bạn

nginx rewrite url wordpress laravel

Giới thiệu sơ bộ

Mình sẽ không copy hoặc viết quá dài về Nginx, trong phạm vi bài này các bạn chỉ cần biết Nginx khác Apache (một webserver thông dụng từ xưa đến nay) là không sử dụng .htaccess để Rewrite URL. Mà Nginx Rewrite URL theo một cách khác. Các bạn có thể tham khảo về quy tắc cũng như ví dụ về rewrite url của nó ở đây . Và trong bài viết này, mình sẽ đưa ra 2 ví dụ hướng dẫn về rewrite url cho WordPress – WordPress sử dụng sub-folder Laravel

Ngoài ra còn có Tool Online giúp các bạn chuyển đổi file .htaccess cũ sang cách rewrite của nginx rất hay – các bạn vào đây để thử nghiệm

 

 1. Nginx Rewrite URL WordPress

VPS của mình sử dụng Centminmod để setup và add vhost. Mặc định file conf rewrite cho domain thường nằm ở đường dẫn: /usr/local/nginx/conf/conf.d/ . Tại thư mục này các bạn sẽ thấy các file config cho từng domain. Bạn mở file theo domain cần rewrite lên, thêm đoạn này bên trong đoạn server { … }  :

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

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

 

Đối với trường hợp các bạn có nhiều site WordPress, thì có thể làm theo cách include file vào, không cần phải mỗi domain là phải thêm 1 đoạn như vậy, include file config mẫu vào sẽ nhanh hơn. Các bạn tạo 1 file theo đường dẫn, ví dụ ở đây mình tạo:

/usr/local/nginx/conf/rewrite/wordpress.conf

Thì khi có domain mới, các bạn chỉ cần mở file tendomain.conf lên , rồi thêm vào bên trên đoạn # ngx_pagespeed & ngx_pagespeed handler với nội dung:

include /usr/local/nginx/conf/rewrite/wordpress.conf;

Quá dễ dàng phải không nào

 2. Nginx Rewrite URL WordPress Sub-folder

Cũng như bên trên, nhưng sẽ khác một chút, các bạn tham khảo đoạn bên dưới, ví dụ mình chạy WordPress ở sub-folder tên demo :

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

Chỉ cần 1 đoạn vậy thôi là đã có thể Rewrite URL WordPress Sub-folder rồi

 3. Nginx Rewrite URL Laravel

Laravel cũng thế, cũng 1 đoạn đơn giản:

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

Mình đã làm theo cách trên và các site WordPress cũng như Laravel của mình đều chạy tốt

Lưu ý: sau khi các bạn viết các đoạn rewrite xong, lưu lại và dùng tài khoản root của VPS gõ lệnh : service nginx restart để khởi động lại nginx mới áp dụng và chạy được

4. Tổng kết

Với cách viết như trên, tạm thời là hướng dẫn cơ bản, ở các bài viết sau mình sẽ viết thêm nhiều tips nữa liên quan đến Nginx. Hy vọng sẽ giúp các bạn được trong việc rewrite url cho nginx

Nếu viết theo cách bên trên của mình mà không được hoặc bị lỗi, các bạn có thể comment bên dưới, mình sẽ hỗ trợ

Cám ơn các bạn