"vanilla"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는 워드 프레스 멀티 사이트 설치 이미지의 기본 정식 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=$1wp-includes/ms-files.php처리하고, 이미지 및 / 또는 유용한 헤더를 출력합니다. 여기에는 몇 가지 장점이 있습니다.

  • 보안 측면에서 정보가 적을수록 좋습니다. "wp-content / blogs.dir / 5"는 약간의 TMI blog_id입니다. 워드 프레스 멀티 사이트를 실행 중이고 5는 5입니다.
  • URL 구조는 단일 사이트 설치의 URL 구조와 동일합니다. 다중 사이트 설치에서 자체 사이트로 사이트를 이동 한 경우 데이터베이스에서 해당 참조를 업데이트하거나 외부 참조를 위해 이전 경로를 301 업데이트하지 않아도됩니다.
  • 당신은 공용 액세스에서 또는 파일 디렉토리를 이동할 수 있습니다 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그러한 코드를 추가하기에 좋은 장소입니다.


2

다중 사이트 설치에서 WordPress 3.5 이상을 사용하는 설치 ms-files.php는 직접 무시되며 blogs.dir사용되지 않습니다.

대신, 업로드는 저장되어 그대로 wp-content/blogs/{blog_id}참조됩니다. 이는 서브 도메인 설치에서 파일에 액세스 할 수있는 방법 은 하나 이고 서브 디렉토리 설치에서는 두 가지 방법 있음을 의미합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.