Tôi cần làm gì để chuyển đổi MultiSite của mình từ HTTP sang HTTPS?


8

Tôi đã được giao nhiệm vụ chuyển đổi khoảng 100 trang web trong ví dụ nhiều trang của tôi sang HTTPS.

Tôi có thể dễ dàng viết một tập lệnh để đánh DB và thay đổi giá trị siteurlhomethành HTTPS, điều này sẽ buộc trang web phải liệt kê các tập lệnh và hình ảnh nhúng trong tương lai vào HTTPS phải không?

Chà, tôi cũng cần phải đi qua tất cả post_content cho bất kỳ liên kết nội bộ nào, cũng như hình ảnh bằng HTTP và chuyển đổi chúng thành HTTPS.

Tôi có thể có thể quất một cái gì đó cùng nhau để làm điều đó, nhưng tôi tự hỏi tôi cần phải thay đổi điều gì khác. HƯỚNG DẪN phải không? Nếu tôi đã sử dụng các lệnh $ wpdb, tôi có cần định cỡ lại DB sau đó không?

Tôi nên hỏi đầu tiên, có một plugin đáng tin cậy sẽ chăm sóc điều này cho tôi? Tôi cần biết gì nữa về quy trình này?

Lưu ý - Chúng tôi đã có tất cả các chứng chỉ SSL vì vậy đó là điều tôi không phải lo lắng. - Máy chủ đang chạy linux (redhat) và apache - Multisite đang sử dụng các thư mục con - Tôi không biết nhiều tho, máy chủ nằm ngoài phạm vi quyền hạn của tôi


Multisite của bạn có sử dụng thư mục con hoặc tên miền phụ không? Bạn đang sử dụng máy chủ web nào (Apache, nginx, v.v.)? Điều đó sẽ ảnh hưởng đến loại chứng chỉ SSL mà bạn mua sắm.
Pat J

Cảm ơn Pat, tôi đã chỉnh sửa câu hỏi của tôi với thông tin bạn hỏi về.
rugbert

Hãy cẩn thận với việc tìm và thay thế tự động - nếu bạn có dữ liệu tuần tự trong cơ sở dữ liệu, bạn sẽ phá vỡ nó bằng cách thay đổi httpthành httpsnếu bạn cũng không thay đổi độ dài chuỗi!
Steven

Xin chào @ rugbert, bạn đã có thể giải quyết câu hỏi này chưa? Chỉ cần kiểm tra nếu câu trả lời của tôi là hữu ích cho câu hỏi của bạn.
Ethan Jinks O'Sullivan

Câu trả lời:


1

Bạn có thể chạy tập lệnh để CẬP NHẬT tất cả các url và hướng dẫn lên https, nếu bạn muốn thiết lập sạch.

Nhưng cũng xem xét các lựa chọn thay thế như:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

Trong wp-config.php cho phụ trợ:

define('FORCE_SSL_ADMIN', true);

Trong wp-config.php cho frontend (hoặc chạy tập lệnh db UPDATE):

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

Sau đó, bạn có thể chỉ cần chạy một tập lệnh để CẬP NHẬT tất cả url nội dung wp_posts.


0

Quá trình này thực sự liên quan đến việc mua Chứng chỉ bảo mật và áp dụng nó cho máy chủ của bạn cho các trang web của bạn. Điều này sẽ lần lượt buộc tất cả mọi người truy cập vào một kết nối an toàn thông qua chứng chỉ được cung cấp bởi máy chủ của bạn. Các chứng chỉ này được gọi là SSL Certs: http://www.DigiCert.com/SSL-Certert


Cảm ơn John, tôi đã quên đề cập rằng chúng tôi có tất cả các chứng chỉ SSL.
rugbert

Ok trong trường hợp đó các certs đã được áp dụng và tất cả các trang web của bạn được cung cấp chính xác trong các tệp DNS? Tôi phải hỏi bạn có lưu trữ tại chỗ hoặc với bên thứ ba không? HĐH nào là môi trường máy chủ?
John Lucey

Chúng tôi đang sử dụng một bên thứ ba để lưu trữ. Tôi không có quá nhiều thông tin hoặc quyền truy cập vào máy chủ, nhưng đó là một máy chủ linux màu đỏ đang chạy apache. Tôi đồng tình hơn về những gì tôi cần đến DB
rugbert

1
Tôi không tin bất cứ điều gì phải được thực hiện cho cơ sở dữ liệu. SSL là phía máy chủ chứ không phải DB. Lời khuyên của tôi sẽ là đảm bảo rằng các Certs đã được áp dụng cho máy chủ và xác minh bằng cách sử dụng https trong url của bạn để kiểm tra tính hợp lệ. Nếu trang web xuất hiện, bạn có thể chỉ cần nhập URL cũ không có https và nó sẽ tự động đưa bạn vào https. Đã được một thời gian kể từ khi tôi triển khai một chứng chỉ rất buồn, tôi không thể giúp bạn vượt qua các bước đó nhưng các kỹ sư của bạn sẽ có thể xử lý việc đó cho bạn cũng như tệp chuyển hướng DNS trên máy chủ để sửa lỗi phía máy chủ url.
John Lucey

0

Một cách có thể để thực hiện sửa đổi dữ liệu này là sử dụng WP-CLI trên thiết bị đầu cuối.

Trước hết, bạn nên đảm bảo rằng bạn có một bản sao lưu và chiến lược khôi phục vững chắc trong trường hợp có bất cứ điều gì sai. Bạn cũng nên kiểm tra quy trình này trên hệ thống cục bộ hoặc thử nghiệm với một bản sao của cơ sở dữ liệu trực tiếp.

Các bước cơ bản là, lặp lại qua từng trang web trong mạng của bạn và thay thế các URL của từng trang web bằng search-replacelệnh của WP-CLI .

Đây là một bash one-liner:

for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done

Hãy xem xét rằng:

for SITE in $(wp site list --field=url);

Cái đó bắt đầu một vòng lặp cho mỗi dòng đầu ra của lệnh bên trong $()và ghi từng dòng trong biến $SITE.

$(wp site list --field=url)

Đó là WP-CLI site listlệnh mang đến cho bạn một danh sách tất cả các URL trang web trong mạng của bạn. Chỉ chạy lệnh này, bạn có thể sẽ thấy một cái gì đó như:

http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...

Hiện nay

...); do

sẽ chỉ bắt đầu phần vòng lặp bên trong.

Lệnh vòng lặp bên trong thực hiện tất cả các phép thuật (tôi chia nó thành hai dòng sử dụng \để dễ đọc):

wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose

Chúng tôi nói với WP-CLI để tìm kiếm cho $SITE(ví dụ https://your-site.tld/) và thay thế nó bằng một phiên bản sửa đổi một chút: ${SITE/http:/https:}. Đây là một chuỗi bash thay thế hoạt động thay thế http:bằng https:. (Vì vậy, giải quyết các biến, lệnh sẽ như thế nào wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacecó nhiều tùy chọn có thể được mô tả trong tài liệu . Trong ví dụ tôi đã sử dụng:

--dry-run --precise --network --verbose

--dry-run--verboserõ ràng là hữu ích để kiểm tra lệnh.

--network áp dụng hoạt động tìm kiếm và thay thế cũng cho các tab mạng.

--precisenói với WP-CLI sử dụng PHP thay vì SQL để tìm kiếm và thay thế các giá trị. Điều đó đảm bảo các giá trị nối tiếp để không bị hỏng.

Cuối cùng, vòng lặp được đóng lại với

; done

Hãy để tôi nhấn mạnh một lần nữa: kiểm tra điều này sâu sắc trước khi bạn bắt đầu sử dụng điều này vào sản xuất. Bạn nên hiểu cách thức hoạt động của nó và những gì WP-CLI làm. Tôi đã sử dụng WP-CLI trước đây để thực hiện các thao tác như vậy và thay thế các hoạt động để di chuyển nhiều trang sang các tên miền khác, nhưng không chuyển từ httpsang https.

Có thể có một số trường hợp cạnh: WP-CLI vẫn đọc wp-config.phpvà cố gắng tìm một «mạng» phù hợp trong cơ sở dữ liệu bằng cách sử dụng các hằng số trong wp-config.php. Nếu bạn đang thao túng một trang web (cơ sở dữ liệu) nhưng không phải trang web khác (các hằng số trong wp-config.php), bạn có thể gặp rắc rối. Nhưng đối với trường hợp của bạn, tôi nghĩ đó sẽ không phải là vấn đề vì WP thường dựa vào DOMAIN_CURRENT_SITEPATH_CURRENT_SITEdù sao họ cũng sẽ không thay đổi. Nhưng một lần nữa, kiểm tra kỹ lưỡng này.

Với phép thuật bash nhiều hơn một chút, bạn cũng có thể chia vòng lặp này thành nhiều phần của 5 hoặc 10 trang web và từng bước đi qua nó.



Bạn đặt câu hỏi sai hướng. Câu trả lời đúng sẽ là: tại sao người ta nên sử dụng plugin này? Những lợi ích so với phương pháp CLI được mô tả là gì?
David

0

Để đảm bảo tất cả các trang web của bạn sử dụng HTTPS trong bạn post_content, bạn có thể thực hiện một trong hai tùy chọn:

1. Phần cuối: thực hiện truy vấn SQL

Để đảm bảo rằng tất cả các liên kết HTTP của bạn được đặt là HTTPS, hãy sử dụng truy vấn SQL sau:

UPDATE wp_options SET option_value = replace(option_value, 'OLD_URL', 'NEW_URL') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'OLD_URL','NEW_URL');
UPDATE wp_posts SET post_content = replace(post_content, 'OLD_URL', 'NEW_URL');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'OLD_URL','NEW_URL');
  • OLD_URLsẽ được thay thế bằng http://example.com(không phải HTTP)
  • NEW_URLsẽ được thay thế bằng https://example.com(HTTPS)

Điều này sẽ bao gồm các siteurl, homevà tất cả các nội dung của bạn trên trang web của mình vào mới HTTPS.

2. Frontend: sử dụng plugin Tìm kiếm & Thay thế

Cách tiếp cận thân thiện hơn với người dùng là sử dụng plugin Tìm kiếm & Thay thế để dễ dàng thay thế tất cả các bảng có chứa HTTP cũ của bạn và thay đổi chúng thành HTTPS. Quá trình này rất dễ sử dụng và bạn có thể xem trước những bảng và hàng nào sẽ bị ảnh hưởng trước khi áp dụng những thay đổi đó.

Mở đầu

Trước khi áp dụng bất kỳ thay đổi nào, tôi nghĩ rằng không cần phải luôn luôn sao lưu cơ sở dữ liệu của bạn trong trường hợp xảy ra sự cố.


0

HTTP là một giao thức mặc định, được hầu hết các trang web sử dụng để xử lý thông tin trên web. Trang web của bạn đang chạy trên HTTPS mà không có bất kỳ thông báo lỗi nào, điều đó có nghĩa là chứng chỉ của bạn đã được cài đặt chính xác. Bạn nên di chuyển toàn bộ trang web của mình từ HTTP sang HTTPS.

Tìm hiểu cách di chuyển HTTP sang HTTPS cho WordPress

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.