「バニラ」MUインストールではどのアセットURLが受け入れられますか?


9

Wordpressは、MUインストールの多くのURIによってコンテンツをアドレス指定できるように見えます。例えば:

 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

すべて同じ場所にルーティングされているように見えます。さらにエイリアスはありますか?どれが正規のものですか?これらは偶発的なものですか?関連するフィルターはありますか?

回答:


4

簡潔な答え

example.com/bob/files/picture.jpgは、WordPressマルチサイトインストールでの画像の推奨される正規URLです。URL blogs.dir内の2つのURLは基本的に同一であり、どちらもファイルシステム構造を利用します。サブドメインインストールではなくサブディレクトリインストールを実行したため、「bob」を含むパスが存在します。他のパスは、example.com / fred / wp-content / blogs.dir / 5 / files / pictures.jpgなど、他のサイトに基づいて存在します。それ以外の場合、他のパスは存在しません。

長い答え

このプロセスについて説明できることはたくさんあります。あなたが探している詳細のレベルが100%確実ではないので、ここで基本を説明します。

WordPressマルチサイトはファイルをblog_id(「/blogs.dir/」の後の「5」)に保存して、物事を整理し、異なるサイトのファイルを分離します。このディレクトリ構造は、公開することを目的としていません。WordPressは書き換えルールを使用してにルーティング^files/(.+)wp-includes/ms-files.php?file=$1wp-includes/ms-files.php画像や役立つヘッダーを処理して出力します。これにはいくつかの利点があります。

  • セキュリティの観点からは、情報が少ないほど常に優れています。「wp-content / blogs.dir / 5」は小さなTMIです。WordPressマルチサイトを実行していて、blog_id5であると表示されています。
  • URLの構造は、単一サイトのインストールと同じです。サイトをマルチサイトインストールから独自のサイトに移動する場合、データベース内の参照を更新したり、外部参照の古いパスを更新したりする必要はありません。
  • あなたはパブリックアクセスのうち、またはファイルのディレクトリを移動することができdeny from all.htaccess、あなたがしたくない場合はそう、例えば、人々は元の画像サイズにアクセスすることはできません。
  • 特定のファイルにアクセス制御を追加できます

主な欠点が1つあります。それは、画像/ファイルがPHPを通過するため(さらに、いくつかのMySQLクエリを必要とする可能性があるため)、さらに多くのリソースが必要になることです。キャッシュプラグインがインストールされている場合、追加のリソースはごくわずかです。

フィルターに関しては、mu-plugins、プラグイン、テーマのいずれも読み込まれない* 1つの理由で、プロセス内の何かを簡単にフィルターすることはできません。あなたができる最善のことは、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、そのようなコードを追加するのに適した場所です。


2

WordPress 3.5以降でのマルチサイトインストールのセットアップでms-files.phpは、直接バイパスされ、blogs.dir使用されません。

代わりに、アップロードが保存されwp-content/blogs/{blog_id}、そのように呼ばれます。つまり、サブドメインインストールでファイルにアクセスする方法は1つだけで、サブディレクトリインストールでは2つしかありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.