Những URL tài sản nào được chấp nhận trong một cài đặt vanilla của MU?


9

Wordpress xuất hiện để cho phép nội dung được xử lý bởi nhiều URI trong cài đặt MU. Ví dụ:

 example.com/wp-content/blogs.dir/5/files/picture.jpg
 example.com/bob/files/picture.jpg
 example.com/bob/wp-content/blogs.dir/5/files/pictures.jpg

Tất cả xuất hiện để tuyến đường đến cùng một nơi. Có nhiều bí danh? Cái nào là hợp quy? Có ai trong số những người tình cờ? Có bộ lọc liên quan?

Câu trả lời:


4

Câu trả lời ngắn

example.com/bob/files/picture.jpg là URL chuẩn, được ưu tiên cho hình ảnh trong bản cài đặt WordPress Multisite . Hai URL có blogs.dirtrong URL về cơ bản là giống hệt nhau và cả hai đều tận dụng cấu trúc hệ thống tệp. Đường dẫn với 'bob' tồn tại bởi vì bạn đã cài đặt thư mục con, không phải cài đặt tên miền phụ. Các đường dẫn khác sẽ tồn tại dựa trên các trang web khác của bạn, ví dụ example.com/fred/wp-content/bloss.dir/5/files/pictures.jpg. Mặt khác, không có con đường khác tồn tại.

Câu trả lời dài

Có rất nhiều người có thể giải thích về quy trình này và tôi không chắc chắn 100% về mức độ chi tiết mà bạn đang tìm kiếm, vì vậy tôi sẽ đưa ra những điều cơ bản ở đây.

WordPress Multisite lưu trữ các tệp theo blog_id("5" sau "/bloss.dir/") để giữ mọi thứ được sắp xếp và tách các tệp của các trang web khác nhau. Cấu trúc thư mục này không có ý định công khai. WordPress sử dụng quy tắc viết lại để định tuyến ^files/(.+)tới wp-includes/ms-files.php?file=$1, và sau đó wp-includes/ms-files.phpxử lý và kết quả đầu ra hình ảnh và / hoặc một số tiêu đề hữu ích. Có một vài lợi thế cho việc này:

  • Về mặt bảo mật, ít thông tin luôn tốt hơn. "Wp-content / Blogs.dir / 5" là một TMI nhỏ - nó cho biết bạn đang chạy WordPress Multisite và đó blog_idlà 5.
  • Cấu trúc URL giống hệt với cài đặt một trang web. Nếu bạn đã từng chuyển một trang web từ bản cài đặt Multisite sang trang của nó, bạn sẽ không phải cập nhật các tham chiếu đó trong cơ sở dữ liệu hoặc 301 đường dẫn cũ cho các tham chiếu bên ngoài.
  • Bạn có thể di chuyển thư mục tệp ra khỏi quyền truy cập công khai hoặc deny from allthông qua .htaccess, ví dụ, mọi người không thể truy cập kích thước hình ảnh gốc nếu bạn không muốn.
  • Bạn có thể thêm kiểm soát truy cập vào các tệp cụ thể

Có một nhược điểm chính, đó là hình ảnh / tệp đang truyền qua PHP (và thậm chí có thể yêu cầu một vài truy vấn MySQL), vì vậy nó đòi hỏi nhiều tài nguyên hơn. Nếu bạn đã cài đặt một bộ đệm ẩn, các tài nguyên bổ sung sẽ không đáng kể.

Liên quan đến các bộ lọc, bạn không thể dễ dàng lọc bất cứ thứ gì trong quy trình vì một lý do: không phải mu-plugin , plugin hoặc chủ đề của bạn được tải *. Điều tốt nhất bạn có thể làm là ghi đè các hằng số trong wp-config.php. Dưới đây là các hằng số hữu ích / có liên quan mà bạn có thể ghi đè:

if ( !defined( 'UPLOADBLOGSDIR' ) )
    define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );

if ( !defined( 'UPLOADS' ) ) {
    // Uploads dir relative to ABSPATH
    define( 'UPLOADS', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
    if ( 'wp-content/blogs.dir' == UPLOADBLOGSDIR )
        define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );
}

/**
 * Optional support for X-Sendfile header
 */
if ( !defined( 'WPMU_SENDFILE' ) )
    define( 'WPMU_SENDFILE', false );

/**
 * Optional support for X-Accel-Redirect header
 */
if ( !defined( 'WPMU_ACCEL_REDIRECT' ) )
    define( 'WPMU_ACCEL_REDIRECT', false );

* Mặc dù plugin không được nạp, thả-in làm. Do đó, mặc dù bạn không thể sử dụng các plugin tiêu chuẩn, WordPress vẫn đặt nền tảng để làm bất cứ điều gì bạn cần, như (như đã đề cập ở trên) thêm kiểm soát truy cập vào các tệp nhạy cảm. Drop-in sunrise.phpsẽ là một nơi tốt để thêm mã như vậy.


2

Trong cài đặt nhiều trang cài đặt với WordPress 3.5 trở lên, ms-files.phpđược bỏ qua trực tiếp và blogs.dirkhông được sử dụng.

Thay vào đó, tải lên được lưu trữ trong wp-content/blogs/{blog_id}và được gọi là như vậy. Điều này có nghĩa là chỉ có một cách để truy cập các tệp trên cài đặt tên miền phụ và chỉ có hai cách để cài đặt thư mục con.

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.