답변:
example.com/bob/files/picture.jpg는 워드 프레스 멀티 사이트 설치 이미지의 기본 정식 URL입니다 . URL에 포함 blogs.dir
된 두 URL 은 본질적으로 동일하며 둘 다 파일 시스템 구조를 활용합니다. 하위 도메인 설치가 아닌 하위 디렉토리 설치를 수행했기 때문에 'bob'이있는 경로가 존재합니다. 다른 경로 (예 : example.com/fred/wp-content/blogs.dir/5/files/pictures.jpg)에 따라 다른 경로가 존재할 수 있습니다. 그렇지 않으면 다른 경로가 없습니다.
이 과정에 대해 설명 할 수있는 것이 많으며, 찾고있는 세부 수준이 100 % 확실하지 않으므로 여기에서 기본 사항을 설명하겠습니다.
WordPress Multisite는 파일을 blog_id
정리하여 ( "/blogs.dir/"뒤에 "5") 파일을 정리하여 다른 사이트의 파일을 분리합니다. 이 디렉토리 구조는 공개되지 않습니다. 워드 프레스는 경로에 재 작성 규칙을 사용 ^files/(.+)
하는 wp-includes/ms-files.php?file=$1
후 wp-includes/ms-files.php
처리하고, 이미지 및 / 또는 유용한 헤더를 출력합니다. 여기에는 몇 가지 장점이 있습니다.
blog_id
입니다. 워드 프레스 멀티 사이트를 실행 중이고 5는 5입니다.deny from all
통해 .htaccess
원하지 않는 경우 그래서, 예를 들어, 사람들은 원본 이미지의 크기를 액세스 할 수 없습니다.이미지 / 파일이 PHP를 통과하고 (아마도 MySQL 쿼리가 필요할 수도 있음) 한 가지 큰 단점이 있으므로 더 많은 리소스가 필요합니다. 캐싱 플러그인이 설치되어 있으면 추가 리소스는 무시해도됩니다.
필터와 관련하여 mu-plugins , 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
그러한 코드를 추가하기에 좋은 장소입니다.