Cách đối phó với Wordpress trên localhost


8

Tôi đang chạy một trang WP trên máy tính xách tay của mình bằng localhost và tôi thường cần đồng nghiệp của mình xem nó. Nếu họ nhập IP của nhà tôi, họ có thể truy cập trang web, nhưng tất cả các URL trong WP sử dụng site_url () hoặc tương tự đều lặp lại "localhost", điều này tất nhiên không hoạt động đối với người ngoài.

Vì vậy, tôi đã thay đổi WP để sử dụng IP của mình cho URL trang web đã giải quyết vấn đề đó, nhưng đã tạo một cái khác. Nếu tôi mang máy tính xách tay ra khỏi nhà và cố gắng xem trang web của mình, bây giờ tất cả các liên kết sẽ xuất hiện dưới dạng http: // home-ip / không khả dụng. Hơn nữa, tôi không thể vào wp-admin để thay đổi URL trang web trở lại localhost vì tôi đang được chuyển hướng đến http: // home-ip / site / wp-admin / .

Có cách nào để giải quyết vấn đề này mà không phải liên tục thay đổi URL mỗi khi tôi muốn người khác truy cập từ bên ngoài hoặc mỗi khi tôi rời khỏi nhà.

Câu trả lời:


9

Bạn có thể sử dụng wp-config.phpđể thay đổi url trang web tùy thuộc vào nơi trang web được truy cập, sử dụng $_SERVER['REMOTE_ADDR']. Của tôi có một cái gì đó như thế này:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') { 
    // accesing site from my local server
    define('WP_SITEURL', 'http://localhost/mysite/');
    define('WP_HOME', 'http://localhost/mysite');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
    // accesing site from another machine in my home network, 
    // all their (internal) network addresses begin with this number;
    // the next line provides the server's own internal network address 
    define('WP_SITEURL', 'http://192.168.0.192/mysite/');
    define('WP_HOME', 'http://192.168.0.192/mysite');
} else { //accesing site from outside home
    define('WP_SITEURL', 'http://89.*.*.*/mysite/'); //replace by your external home IP
    define('WP_HOME', 'http://89.*.*.*/mysite');
}
//error_log("Siteurl is ".WP_SITEURL);

Kỹ thuật này cũng giúp rất nhiều để đơn giản hóa việc tải trang web lên máy chủ sản xuất hoặc giữ đồng bộ các phiên bản địa phương và sản xuất của trang web. (Mặc dù, rõ ràng, wp-config.phptrên máy chủ sản xuất không nên có mã này.)

Lưu ý: Vì một số lý do, tôi không thể sử dụng IP nhà bên ngoài của mình từ các máy khác trong mạng gia đình; nếu đó không phải là trường hợp của bạn, bạn có thể loại bỏ else if, chỉ để lại elsemột phần.


1
Cảm ơn bạn, điều này đã làm việc cho tôi. Tuy nhiên tôi đã phải thêm một | | $ _SERVER ['REMOTE_ADDR'] == ':: 1'
dùng1778856

1
Thật thú vị, tôi không biết về nó, nhưng một tìm kiếm nhanh cho tôi biết rằng ":: 1 là địa chỉ loopback trong IPv6. Hãy nghĩ về nó như là phiên bản IPv6 của 127.0.0.1". Tôi đã chỉnh sửa câu trả lời để bao gồm nó.
adelval

1

Mặc dù câu trả lời được chấp nhận có vẻ là một câu trả lời hay, nhưng chỉ thay đổi WP_SITEURL / WP_HOME không hoạt động trong trường hợp của tôi vì luôn có nhiều liên kết tuyệt đối trong nội dung văn bản trên các trang (ví dụ: hình ảnh hoặc liên kết được thêm thông qua trình soạn thảo WYSIWYG) . Nói cách khác, tôi khá nhiều phải sử dụng cùng một tên miền nếu tôi muốn trang web hoạt động đúng.

Vì vậy, trong trường hợp nó giúp người khác gặp phải vấn đề này, giải pháp của tôi là giải pháp bên ngoài Wordpress - mặc dù nó có thể không giúp ích trong mọi trường hợp.

Tôi sử dụng một tên miền, ví dụ me.mycompany.com, và sau đó trong tệp HOSTS của tôi, tôi làm cho nó phân giải thành 127.0.0.1 (nói cách khác, localhost). Đối với bất kỳ đồng nghiệp nào của tôi cần xem trang web, tôi thêm tên miền của mình vào tệp HOSTS của họ bằng IP cục bộ của tôi.

Giải pháp này cũng được mở rộng khi khách hàng bên ngoài mạng của chúng tôi cần xem trang web; chúng tôi chỉ cần đảm bảo me.mycompany.com phân giải thành IP công cộng của chúng tôi (thông thường máy chủ web của bạn có thể giúp với điều này và chắc chắn sẽ giúp nếu bạn có IP tĩnh cho kết nối Internet của mình), và sau đó tại bộ định tuyến của chúng tôi, định tuyến web yêu cầu IP nội bộ của tôi, thiết lập hiệu quả một giải pháp lưu trữ web dễ dàng (tất nhiên chỉ để phát triển chứ không phải sản xuất!)

Hy vọng điều này sẽ giúp được ai đó. Tệp HOSTS có thể được chỉnh sửa trên bất kỳ nền tảng nào, rõ ràng các hướng dẫn khác nhau đối với Windows, Mac và Linux, vì vậy, tốt nhất bạn nên Google giúp đỡ nếu bạn cần, nhưng trong Windows, tệp là C: \ Windows \ System32 \ driver \ etc \ hosts - mở nó trong Notepad và thực hiện các thay đổi cần thiết, theo định dạng trong tệp (bạn sẽ cần chạy với tư cách Quản trị viên để lưu tệp).

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.