Intereting Posts
Как добавить функциональность плагина в WordPress Frontend Menus Странное поведение get_the_ * с php 5.4 Библиотека мультимедиа запрещает спам-файлы? Переменная равна другой переменной, а затем равна другой переменной Как вы перечислите все боковые панели в метабоксе Блокировать прямой URL-адрес WP Query – Это правильно? Какой ответ callback имеет приоритет, если оба плагина и темы используют один и тот же крючок? Пользовательский RSS-канал не работает должным образом Плагины, которые ограничивают доступ на основе группы пользователей / ролей Переписать страницу на субдомен другому Есть ли решение для автоматической публикации данных на WP-запись из базы данных Бэкэнд – конфликты в категориях и меню Специальное сообщение в блоге, которое будет назначено в качестве целевой страницы моего блога wordpress Shortcode: отображение списка созданного короткого кода во всплывающем окне

Какие URL-адреса активов приемлемы для установки «ванильного» MU?

По-видимому, WordPress позволяет разрешать контент во многих URI в установке MU. Например:

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 

Все, кажется, направляются в одно и то же место. Есть ли больше псевдонимов? Какой из них канонический? Являются ли они случайными? Имеются ли соответствующие фильтры?

Короткий ответ

example.com/bob/files/picture.jpg является предпочтительным, каноническим URL-адресом для изображений в многопользовательской установке WordPress . Два URL-адреса с blogs.dir в URL-адресе по существу идентичны, и оба используют структуру файловой системы. Путь с «bob» существует, потому что вы выполнили установку подкаталога, а не установку поддомена. Другие пути будут существовать на основе ваших других сайтов, например example.com/fred/wp-content/blogs.dir/5/files/pictures.jpg. В противном случае других путей не существует.

Длительный ответ

Об этом процессе можно многое рассказать, и я не на 100% уверен в том, какой уровень детализации вы ищете, поэтому я опишу основы здесь.

WordPress Multisite хранит файлы с помощью blog_id («5» после «/blogs.dir/»), чтобы все было организовано и разделяло файлы разных сайтов. Эта структура каталогов не предназначена для публикации. WordPress использует правила перезаписи для маршрутизации ^files/(.+) в wp-includes/ms-files.php?file=$1 , а затем wp-includes/ms-files.php обрабатывает и выводит изображение и / или некоторые полезные заголовки , Для этого есть несколько преимуществ:

  • Что касается безопасности, то меньше информации всегда лучше. «wp-content / blogs.dir / 5» немного TMI – он говорит, что вы используете WordPress Multisite, а blog_id – 5.
  • Структура URL-адресов идентична структуре одного узла. Если вы когда-либо перемещали сайт с помощью установки Multisite самостоятельно, вам не пришлось бы обновлять эти ссылки в базе данных или 301 старые пути для внешних ссылок.
  • Вы можете переместить каталог файлов из общедоступного доступа или deny from all .htaccess чтобы, например, люди не могли получить доступ к размерам оригинального изображения, если вы этого не хотите.
  • Вы можете добавить контроль доступа к определенным файлам

Есть один главный недостаток, заключающийся в том, что изображения / файлы проходят через PHP (и, возможно, даже требуют нескольких запросов MySQL), поэтому для этого требуется больше ресурсов. Если у вас установлен плагин кеширования, дополнительные ресурсы должны быть незначительными.

Что касается фильтров, вы не можете легко фильтровать что-либо в этом процессе по одной причине: ни mu-plugins , ни плагины, ни ваша тема не загружаются *. Лучшее, что вы можете сделать, это переопределить константы в wp-config.php. Вот наиболее полезные / релевантные константы, которые вы можете переопределить:

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

* Несмотря на то, что плагины не загружаются, вы можете сделать это. Поэтому, хотя вы не можете использовать стандартные плагины, WordPress все еще закладывает основу для того, чтобы делать все, что вам нужно, например (как упоминалось выше), добавляя контроль доступа к конфиденциальным файлам. Падение sunrise.php было бы хорошим местом для добавления такого кода.

В многопользовательской установке установки с WordPress 3.5 или более поздней, ms-files.php обходит напрямую, а blogs.dir не используется.

Вместо этого, закачки хранятся в wp-content/blogs/{blog_id} и упоминаются как таковые. Это означает, что есть только один способ доступа к файлам при установке поддомена, и только два для установки подкаталога.