Wordpress - Hướng Dẫn Migrate từ HTTP sang HTTPS

Trong bài viết này chúng ta sẽ tìm hiểu cách thực hiện việc chuyển một website từ sử dụng giao thức http sang https. Người đọc cũng cần lưu ý rằng hướng dẫn trong bài viết này áp dụng cho các site Wordpress được host trên web server đã được cài đặt và thiết lập chứng chỉ SSL certificate.

Bước 1: Cập Nhật Thiết Lập cho Home URL và Site URL

Bước đầu tiên chúng ta sẽ thực hiện đó là thay đổi giá trị cho hai trường home urlsite url Trong phần thiết lập chung General Settings.

Thay đổi Home URL và Site URL trong thiết lập chung Wordpress

Ở hai trường này bạn sẽ thay đổi giao thức từ http sang https.

Ngoài ra nếu như bạn không có quyền truy cập vào phần admin (hoặc không có tài khoản admin) thì bạn có thể chạy câu lệnh SQL sau:

UPDATE *  wp_options  SET option_value='https://example.com' WHERE option_name='siteurl' \G;

Và:

UPDATE *  wp_options  SET option_value='https://example.com' WHERE option_name='homeurl' \G;

Ngoài ra một lợi thế của truy cập trực tiếp vào MySQL server khi không đăng nhập được vào phần quản trị admin đó là bạn có thể rà soát laị toàn bộ các thiết lập khác không sử dụng SSL:

SELECT *  wp_options  WHERE option_value LIKE '%http://example.com%' \G;

Bước 2: Cập Nhật Giá Trị Của WP_HOMEWP_SITEURL trong wp-config.php

Sử dụng text editor có trên máy bạn để mở tập tin wp-config.php và thêm vào hai câu lệnh PHP sau ở phía đầu tập tin này:


define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */

Lưu thay đổi trên và bạn có thể đóng tập tin này lại.

Bước 3: Gán Giá Trị cho Biến $_SERVER['HTTPS']

Trong thư mục chứa theme Wordpress mà website đang sử dụng, bạn tìm và mở tập tập tin functions.php. Ví dụ theme bạn sử dụng là Twenty Sixteen thì tập tin này sẽ nằm ở địa chỉ wp-content/themes/twentysixteen/functions.php trong thư mục chứa website Wordpress của bạn.

Trong phần đầu của tập tìn fuctions.php này bạn thêm vào câu lệnh PHP sau:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
        $_SERVER['HTTPS'] = 'on';

Câu lệnh PHP trên sẽ đảm bảo các hàm lấy về uri của wesite trong Wordpress như get_directory_template_uri() sẽ trả về một URI sử dụng https thay vì http.

Sau 3 bước trên website bạn đã sẵn sàng để có thể chạy với giao thức https, bạn hay truy cập vào trang chính và các trang trong để để kiểm tra lại một lần nữa.

Bước 4: Chuyển Tiếp HTTP về HTTPS

Bước này đảm bảo rằng các truy tập tới website bạn sử dụng giao thức HTTP sẽ được chuyển sang giao thức mới HTTPS. Cách làm thông thường để sử dụng thực hiện việc này đó là sử dụng module rewrite của Apache web server (để lại comment phía dưới nếu như bạn không sử dụng Apache tôi có thể hỗ trợ bạn). Trong tập tin .htaccess ở thư mục chứa website Wordpress bạn thêm vào các chỉ thị sau:

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

Sau khi lưu các thay đổi ở trên bạn cần truy cập vào website để kiểm tra lại một lần nữa. Bạn cũng cần lưu ý kích hoạt mod_rewrite của Apache để tập tin .htaccess có thể phát huy tác dụng.

Trường hợp bạn sử dụng proxy thì có thể bạn sẽ gặp phải lỗi too many redirect báo về trên trình duyệt. Trong trường hợp này bạn sẽ cần khôi phục lại các thay đổi mới tạo ra trong .htaccess ở trên về như lúc bạn đầu và thêm đoạn code sau vào trong file header.php nằm trong thư mục chứa theme đang sử dụng:

  <?php wp_head(); ?>
        <script type="text/javascript">
                if (location.protocol != 'https:') {
                        location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
                }
        </script>
</head>

Đoạn code mới này sẽ sử dụng JavaScript để chuyển tiếp từ http sang https.

Tới đây chúng ta đã tìm hiểu cách chuyển một website Wordpress từ sử dụng giao thức http sang https. Nếu bạn gặp phải lỗi trong quá trình thực hiện hãy để lại comment ở phía dưới để tôi có thể hỗ trợ.

Thêm Bình Luận: