Jakie adresy URL zasobów są dopuszczalne w instalacji „waniliowej” MU?


9

Wygląda na to, że Wordpress pozwala na adresowanie treści przez wiele identyfikatorów URI w instalacji MU. Na przykład:

 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

Wszystkie wydają się kierować do tego samego miejsca. Czy jest więcej aliasów? Który jest kanoniczny? Czy któryś z nich jest przypadkowy? Czy są odpowiednie filtry?

Odpowiedzi:


4

Krótka odpowiedź

example.com/bob/files/picture.jpg jest preferowanym kanonicznym adresem URL dla obrazów w instalacji WordPress Multisite . Dwa adresy URL blogs.dirw adresie URL są zasadniczo identyczne i oba wykorzystują strukturę systemu plików. Ścieżka z „bob” istnieje, ponieważ wykonałeś instalację podkatalogu, a nie instalację subdomeny. Inne ścieżki istniałyby w oparciu o twoje inne witryny, np. Example.com/fred/wp-content/blogs.dir/5/files/pictures.jpg. W przeciwnym razie nie istnieją inne ścieżki.

Długa odpowiedź

Jest wiele rzeczy, które można wyjaśnić na temat tego procesu i nie jestem w 100% pewien poziomu szczegółowości, którego szukasz, więc przedstawię tutaj podstawy.

WordPress Multisite przechowuje pliki według blog_id(„5” po „/blogs.dir/”), aby utrzymać porządek i oddzielić pliki różnych witryn. Ta struktura katalogów nie jest publiczna. WordPress używa reguł przepisywania, aby kierować ^files/(.+)do wp-includes/ms-files.php?file=$1, a następnie wp-includes/ms-files.phpprzetwarza i wysyła obraz i / lub niektóre pomocne nagłówki. Ma to kilka zalet:

  • Jeśli chodzi o bezpieczeństwo, mniej informacji jest zawsze lepsze. „wp-content / blogs.dir / 5” to mały TMI - mówi, że używasz WordPress Multisite i że blog_idjest to 5.
  • Struktura adresu URL jest identyczna jak w przypadku instalacji w jednym miejscu. Jeśli kiedykolwiek miałbyś przenieść witrynę z instalacji wielostanowiskowej do własnej, nie musiałbyś aktualizować tych referencji w bazie danych ani 301 starych ścieżek dla referencji zewnętrznych.
  • Możesz przenieść katalog plików z publicznego dostępu lub deny from allprzez .htaccess, na przykład, ludzie nie mogą uzyskać dostępu do oryginalnych rozmiarów obrazów, jeśli nie chcesz.
  • Możesz dodać kontrolę dostępu do określonych plików

Jest jedna główna wada, polegająca na tym, że obrazy / pliki przechodzą przez PHP (i być może nawet wymagają kilku zapytań MySQL), więc wymaga więcej zasobów. Jeśli masz zainstalowaną wtyczkę buforującą, dodatkowe zasoby powinny być nieistotne.

Jeśli chodzi o filtry, nie możesz łatwo filtrować niczego w tym procesie z jednego powodu: ani wtyczki mu , wtyczki, ani motyw nie zostaną załadowane *. Najlepsze, co możesz zrobić, to zastąpić stałe w wp-config.php. Oto najbardziej przydatne / odpowiednie stałe, które można zastąpić:

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

* Mimo że wtyczki się nie ładują, drop-in tak. Dlatego chociaż nie możesz używać standardowych wtyczek, WordPress nadal stanowi podstawę do robienia wszystkiego, czego potrzebujesz, na przykład (jak wspomniano powyżej) dodawania kontroli dostępu do wrażliwych plików. Drop-in sunrise.phpbyłby dobrym miejscem na dodanie takiego kodu.


2

W instalacjach wielostanowiskowych instalacja za pomocą WordPressa 3.5 lub nowszego ms-files.phpjest omijana bezpośrednio i blogs.dirnie jest używana.

Zamiast tego przesłane pliki są przechowywane wp-content/blogs/{blog_id}i określane jako takie. Oznacza to, że istnieje tylko jeden sposób dostępu do plików w instalacji subdomeny i tylko dwa w przypadku instalacji podkatalogów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.