Cách bật WordPress Multisite và sửa lỗi chuyển hướng www/non-www

Bài viết này hướng dẫn chi tiết cách bật tính năng Multisite trong WordPress để tạo nhiều website trên cùng một hệ thống, kèm theo cách khắc phục lỗi chuyển hướng sai giữa www và non-www sau khi cài đặt. Phù hợp cho các trang web đa ngôn ngữ như en.example.com, vi.example.com hoặc hệ thống site con theo chủ đề.

Cách bật WordPress Multisite và sửa lỗi chuyển hướng www/non-www

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


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...