4

Composer を使用して自動化された WordPress デプロイを構築しており、github からプルされたメインの WP インストールの外部に wp-content フォルダーを保持しています (カスタム プラグインとテーマがいくつかあるため)。

github からプルして composer を実行すると、フォルダー構造は次のようになります。

-composer.php
-env.php
-public/
 |-index.php
 |-wp-config.php
 |-wp-content/
   |-themes/
   |-plugins/
   |-sunrise.php
 |-wp/
   |wordpress stuff

MAMP を使用すると htaccess ルールはうまく機能しますが、VVV を開発環境として使用しており、VVV は nginx を使用しているため、書き換えルールが機能しません。

VVV は 2 つの conf ファイルを使用します。1 つは VM 上のすべてのサイトで共有されるファイル (共通ルール) で、もう 1 つはサイトごとに 1 つのファイル (基本的にルート ディレクトリをリストするだけ) です。

これが私のサイト固有のconfファイルです:

server {
    listen       80;

    listen       443 ssl;

    server_name  auto.dev ~^auto\.\d+\.\d+\.\d+\.\d+\.xip\.io$;
    root         /srv/www/auto/htdocs/wordpress;

    # my rules    
    # tells nginx to prepend "wp" to things
    rewrite ^/(wp-.*.php)$ /wp/$1 last;
    rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
    # end WP dir rules 

    include /etc/nginx/nginx-wp-common.conf;

}

だから私は追加しました

rewrite ^/(wp-.*.php)$ /wp/$1 last;
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;

そして、そのような作品 (管理領域を取得でき、管理領域にはすべての CSS と JS があります) が、3 つの大きな問題に直面しています。

1) サイトのフロントエンドに CSS がありません。Chrome のコンソールに、index.php の 2 行目にエラーが表示されます。

Uncaught SyntaxError: Unexpected token <

注 - いくつかのテーマが機能しているように見えます。Twenty Fifteen テーマのサイトは機能しているようです。

2) 何らかの理由でマルチサイト ネットワーク エリアにアクセスできません。要求が次のようにhttp://auto.dev/wp-admin/network/書き換えられます。http://http//auto.dev/wp-admin/network/

3) 最後に、サブサイトにログインできません。http://auto.dev/wiki/wp-admin/リダイレクトループを与えるようなもの

4) サイトのテーマを変更しようとすると、テーマのプレビューが壊れていることに気付きました。

4

2 に答える 2

4

いくつかのメモ:

ここで述べたようwp-content/に、フォルダーはフォルダーの下にありません:wp/

rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;

Twenty Fifteenなどのデフォルトのテーマはフォルダに同梱されている/wp/wp-content/ため、そこで機能する理由を説明できます。

/wp/ネットワーク管理者の URL に欠落している部分に関して、 Daniel Bachhuberがこの問題を修正する便利な要旨スニペットを投稿しました。フィルターを使用しnetwork_site_urlて注入します。

<?php
/**
 * Fix network admin URL to include the "/wp/" base
 * 
 * @see https://core.trac.wordpress.org/ticket/23221
 */
add_filter( 'network_site_url', function( $url, $path, $scheme ){
    $urls_to_fix = array(
        '/wp-admin/network/',
        '/wp-login.php',
        '/wp-activate.php',
        '/wp-signup.php',
        );
    foreach( $urls_to_fix as $maybe_fix_url ) {
        $fixed_wp_url = '/wp' . $maybe_fix_url;
        if ( false !== stripos( $url, $maybe_fix_url )
            && false === stripos( $url, $fixed_wp_url ) ) {
            $url = str_replace( $maybe_fix_url, $fixed_wp_url, $url );
        }
    }
    return $url;
}, 10, 3 );

ルート サイト アドレスを持つサブディレクトリ内のマルチサイトのオープン チケット#23221も参照してください。

nginx + wp-skeleton 構造のマルチサイトに関するGitHub でのいくつかの議論(少し前にいくつかの実験を投稿しました)。

于 2016-01-07T15:36:10.763 に答える
0

githubで公開した、更新された NGINX 構成だけを使用したソリューションを検討してください。次のように書き換えを変更します

if (!-e $request_filename) {
   rewrite ^/(wp-admin/.*)$ /wp/$1 last;
   rewrite ^/[_0-9a-zA-Z-]+(/wp-admin/.*)$ /wp/$1 last;

   rewrite /wp-admin$ $scheme://$host$uri/ permanent;

   rewrite ^/[_0-9a-zA-Z-]+(/wp-includes/.*) /wp/$1 last;
   rewrite ^/(wp-[^/]+\.php)$ /wp/$1 last;
   rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
   rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
rewrite ^/(wp-includes/.*)$ /wp/$1 last;

これにより、管理パネルへのアクセスと、Wordpress Multisite のサブフォルダー インストールによるネットワーク管理パネルに関するすべての問題が解決されます。コードを書く必要はありません。

于 2018-07-20T07:50:30.697 に答える