“Vanilya” MU yüklemesinde hangi varlık URL'leri kabul edilebilir?


9

Wordpress, içeriğin MU yüklemesinde birçok URI tarafından ele alınmasına izin veriyor gibi görünüyor. Örneğin:

 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

Hepsi aynı yere gidiyor gibi görünüyor. Daha fazla takma ad var mı? Hangisi kanonik? Bunlardan herhangi biri kazara mı? Alakalı filtreler var mı?

Yanıtlar:


4

Kısa cevap

example.com/bob/files/picture.jpg, bir WordPress Multisite kurulumundaki görüntüler için tercih edilen, standart URL'dir . URL'de bulunan iki URL blogs.diraslında aynıdır ve her ikisi de dosya sistemi yapısından yararlanır. 'Bob' yolu, alt alan yüklemesi yerine alt dizin yüklemesi yaptığınız için var. Diğer sitelerinize bağlı olarak başka yollar da vardır, örneğin example.com/fred/wp-content/blogs.dir/5/files/pictures.jpg. Aksi takdirde, başka yol yoktur.

Uzun cevap

Bu süreç hakkında açıklayabileceğimiz çok şey var ve aradığınız ayrıntı seviyesinden% 100 emin değilim, bu yüzden burada temel bilgileri vereceğim.

WordPress Multisite blog_id, işleri düzenli tutmak ve farklı sitelerin dosyalarını ayırmak için dosyaları ("/" sonra "5" / "/blogs.dir/") ile depolar. Bu dizin yapısının herkese açık olması amaçlanmamıştır. WordPress, yönlendirmek ^files/(.+)için yeniden yazma kurallarını kullanır wp-includes/ms-files.php?file=$1ve ardından wp-includes/ms-files.phpgörüntüyü ve / veya bazı yardımcı başlıklarını işler ve çıktılar. Bunun birkaç avantajı vardır:

  • Güvenlik açısından, daha az bilgi her zaman daha iyidir. "wp-content / blogs.dir / 5" küçük bir TMI - WordPress Multisite çalıştırdığınızı ve bunun blog_id5 olduğunu söylüyor .
  • URL yapısı, tek site kurulumuyla aynıdır. Bir siteyi Multisite kurulumundan kendi başına taşıyacak olsanız, veritabanındaki bu referansları veya dış referanslar için eski yolları 301 güncellemeniz gerekmez.
  • Sen kamusal erişim dışına veya dosyaları dizinine taşıyabilirsiniz deny from allaracılığıyla .htaccessistemediğiniz eğer öyleyse, örneğin, insanlar orijinal resim boyutlarını erişemez.
  • Belirli dosyalara erişim denetimi ekleyebilirsiniz

Bir ana dezavantajı var, bu da görüntüler / dosyaların PHP'den geçmesi (ve hatta birkaç MySQL sorgusu gerektirmesi), bu yüzden daha fazla kaynak gerektiriyor. Yüklü bir önbellek eklentiniz varsa, ek kaynaklar ihmal edilebilir olmalıdır.

Filtrelerle ilgili olarak, süreçteki hiçbir şeye bir nedenden dolayı kolayca filtre uygulayamazsınız: ne mu-eklentileri , eklentileri, ya da temanız yüklenmez *. Yapabileceğiniz en iyi şey wp-config.php dosyasındaki sabitleri geçersiz kılmaktır. Geçersiz kılabileceğiniz en yararlı / alakalı sabitler şunlardır:

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 );

* Eklentiler yüklenmese de, drop'lar eklenir . Bu nedenle, standart eklentileri kullanamasanız da, WordPress, hassas dosyalara erişim kontrolü eklemek gibi (yukarıda belirtildiği gibi) ihtiyacınız olan her şeyi yapmak için temeli atmaktadır. Bu sunrise.phptür bir kod eklemek için eklenti iyi bir yer olabilir.


2

Çok bölgeli kurulumlarda WordPress 3.5 veya üstü ile kurulum, ms-files.phpdoğrudan atlanır ve blogs.dirkullanılmaz.

Bunun yerine yüklemeler depolanır wp-content/blogs/{blog_id}ve bu şekilde adlandırılır. Bu , bir alt etki alanı yüklemesinde dosyalara erişmenin yalnızca bir yolu ve alt dizin yüklemesinde yalnızca iki yol olduğu anlamına gelir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.