- Giới thiệu về WordPress Multisite
- Bước 1: Bật chế độ Multisite
- Bước 2: Cấu hình mạng website
- Bước 3: Thêm cấu hình theo hướng dẫn
- Bước 4: Cài đặt SSL cho multisite subdomain
- Cấu hình Nginx cho WordPress Multisite (subdomain)
- Cấu hình Apache cho WordPress Multisite (subdomain)
- Lưu ý: Sửa lỗi chuyển hướng về www hoặc non-www
- Cách sửa lỗi redirect www/non-www bằng SQL
- Kết luận
Giới thiệu về WordPress Multisite
Multisite là một tính năng có sẵn trong WordPress cho phép bạn quản lý nhiều website từ cùng một cài đặt WordPress. Bạn có thể tạo các website sử dụng subdomain (ví dụ en.inithtml.com) hoặc subdirectory (ví dụ inithtml.com/en/), tuỳ vào cấu hình ban đầu.
Bước 1: Bật chế độ Multisite
Mở file wp-config.php và thêm dòng sau vào trước đoạn /* That's all, stop editing! */:
define( 'WP_ALLOW_MULTISITE', true );
Sau khi lưu file, bạn có thể truy cập mục Công cụ → Cài đặt Mạng trong bảng quản trị WordPress.
Bước 2: Cấu hình mạng website
Tại trang Cài đặt mạng, bạn sẽ chọn một trong hai kiểu:
- Subdomain: Ví dụ
en.example.com. Thích hợp cho website đã hoạt động. - Subdirectory: Ví dụ
example.com/en/. Chỉ nên dùng nếu website hoàn toàn mới.
Điền tên mạng và địa chỉ email quản trị, sau đó nhấn Cài đặt.
Bước 3: Thêm cấu hình theo hướng dẫn
Sau khi cài đặt mạng, WordPress sẽ cung cấp các đoạn mã để thêm vào:
- wp-config.php: để khai báo MULTISITE, DOMAIN_CURRENT_SITE, v.v.
- .htaccess: để thêm rewrite rules phù hợp với mạng đa site
Thêm các đoạn này chính xác theo hướng dẫn và lưu file.
Bước 4: Cài đặt SSL cho multisite subdomain
Nếu bạn dùng kiểu mạng subdomain (ví dụ en.example.com), hãy cài đặt chứng chỉ SSL dạng wildcard để tất cả subdomain có thể dùng HTTPS mà không bị lỗi bảo mật.
Cách đơn giản nhất là dùng Certbot để xin chứng chỉ miễn phí từ Let’s Encrypt:
certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
Bạn sẽ cần thêm bản ghi DNS TXT khi Certbot yêu cầu. Sau khi cấp thành công, chứng chỉ sẽ có tại:
/etc/letsencrypt/live/example.com/fullchain.pem/etc/letsencrypt/live/example.com/privkey.pem
Cấu hình Nginx cho WordPress Multisite (subdomain)
Dưới đây là mẫu cấu hình Nginx hỗ trợ multisite với wildcard SSL:
server {
listen 80;
server_name .example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name .example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
index index.php;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Cấu hình Apache cho WordPress Multisite (subdomain)
Nếu bạn dùng Apache, hãy bật các module cần thiết:
a2enmod rewrite
a2enmod ssl
a2enmod vhost_alias
Sau đó cấu hình VirtualHost như sau:
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Cuối cùng, đừng quên reload web server sau khi chỉnh cấu hình:
systemctl reload nginx
hoặc
systemctl reload apache2
Lưu ý: Sửa lỗi chuyển hướng về www hoặc non-www
Sau khi cài Multisite, một số trường hợp người dùng gặp lỗi khi truy cập en.example.com bị chuyển hướng về www.example.com hoặc ngược lại. Điều này khiến subdomain không hoạt động đúng.
Nguyên nhân là WordPress ghi giá trị domain ban đầu vào bảng wp_site, và nếu không trùng với domain thực tế, hệ thống sẽ redirect sai.
Cách sửa lỗi redirect www/non-www bằng SQL
Giả sử bạn muốn domain chính là example.com (không có www), hãy chạy câu lệnh sau bằng phpMyAdmin hoặc WP-CLI:
UPDATE wp_site SET domain = 'example.com' WHERE id = 1;
Ngược lại, nếu bạn muốn dùng www.example.com, chỉ cần thay giá trị trong câu lệnh SQL trên. Sau khi sửa, hãy xóa cache và đăng nhập lại để kiểm tra.
Kết luận
WordPress Multisite là giải pháp mạnh mẽ để xây dựng hệ thống website đa ngôn ngữ hoặc nhiều site con trên cùng một nền tảng. Tuy nhiên, cần lưu ý cấu hình chính xác domain trong database để tránh lỗi chuyển hướng không mong muốn giữa www và non-www.
Nếu bạn đang quản lý nhiều phiên bản ngôn ngữ cho cùng một thương hiệu, Multisite là lựa chọn tối ưu giúp tiết kiệm tài nguyên và quản lý tập trung.
Bình luận