Jawaban singkat
example.com/bob/files/picture.jpg adalah URL kanonik yang disukai untuk gambar dalam instalasi WordPress Multisite . Dua URL dengan blogs.dir
URL pada dasarnya identik, dan keduanya memanfaatkan struktur sistem file. Path dengan 'bob' ada karena Anda melakukan instalasi sub-direktori, bukan instalasi subdomain. Jalur lain akan ada berdasarkan situs Anda yang lain, misalnya example.com/fred/wp-content/blogs.dir/5/files/pictures.jpg. Kalau tidak, tidak ada jalan lain.
Jawaban panjang
Ada banyak yang bisa dijelaskan tentang proses ini, dan saya tidak 100% yakin dengan tingkat detail yang Anda cari, jadi saya akan membahas dasar-dasarnya di sini.
WordPress Multisite menyimpan file dengan blog_id
("5" setelah "/blogs.dir/") untuk menjaga semuanya tetap teratur dan memisahkan file-file situs yang berbeda. Struktur direktori ini tidak dimaksudkan untuk umum. WordPress menggunakan aturan penulisan ulang untuk dirutekan ^files/(.+)
ke wp-includes/ms-files.php?file=$1
, dan kemudian wp-includes/ms-files.php
memproses dan menampilkan gambar dan / atau beberapa header bermanfaat. Ada beberapa keuntungan untuk ini:
- Dalam hal keamanan, lebih sedikit informasi selalu lebih baik. "wp-content / blogs.dir / 5" adalah TMI kecil - katanya Anda menjalankan WordPress Multisite dan itu
blog_id
adalah 5.
- Struktur URL identik dengan instalasi satu situs. Jika Anda pernah memindahkan situs dari instalasi Multisite ke miliknya sendiri, Anda tidak perlu memperbarui referensi tersebut dalam database atau 301 jalur lama untuk referensi eksternal.
- Anda dapat memindahkan direktori file dari akses publik atau
deny from all
melalui .htaccess
itu, misalnya, orang tidak dapat mengakses ukuran gambar asli jika Anda tidak mau.
- Anda dapat menambahkan kontrol akses ke file tertentu
Ada satu kelemahan utama, yaitu bahwa gambar / file melewati PHP (dan mungkin bahkan memerlukan beberapa pertanyaan MySQL), sehingga membutuhkan lebih banyak sumber daya. Jika Anda telah menginstal plugin caching, sumber daya tambahan harus diabaikan.
Sehubungan dengan filter, Anda tidak dapat dengan mudah menyaring apa pun dalam proses karena satu alasan: baik plugin , plugin, atau tema Anda tidak dapat dimuat *. Yang terbaik yang dapat Anda lakukan adalah mengganti konstanta di wp-config.php. Berikut adalah konstanta yang paling berguna / relevan yang dapat Anda timpa:
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 );
* Meskipun plugin tidak dimuat, drop-in melakukannya. Oleh karena itu, sementara Anda tidak dapat menggunakan plugin standar, WordPress masih meletakkan dasar untuk melakukan apa pun yang Anda butuhkan, seperti (seperti yang disebutkan di atas) menambahkan kontrol akses ke file sensitif. Drop-in sunrise.php
akan menjadi tempat yang baik untuk menambahkan kode tersebut.