web-dev-qa-db-ja.com

マルチサイトの新しいサイトが見つかりません(404)、メインサイトはまだ機能します

私はwordpress guide に従ってマルチサイトをインストールしました。私のメインサイト(mydomain.com)はうまく機能します、私のマルチサイトはサブディレクトリすなわち(mydomain.com/test/)に基づいています、しかしそれはまったくロードしません(404エラー)。もっと詳しく

 $ cat .htaccess

 RewriteEngine On
 RewriteBase /wordpress/
 RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
 RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^ - [L]
 RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
 RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
 RewriteRule . index.php [L]

 $ cat wp-config.php

/* Multisite */
 define( 'WP_ALLOW_MULTISITE', true );

 define('MULTISITE', true);
 define('SUBDOMAIN_INSTALL', false);
 define('DOMAIN_CURRENT_SITE', 'mydomain.com');
 define('PATH_CURRENT_SITE', '/wordpress/');
 define('SITE_ID_CURRENT_SITE', 1);
 define('BLOG_ID_CURRENT_SITE', 1);

/* That's all, stop editing! Happy blogging. */

あなたがそれを修正するのを助けることができればそれは素晴らしいでしょう。ありがとう

1
kuruvi

私はNginxとApacheの両方がインストールされた状態で同じエラーに直面しました。 Nginxはリバースプロキシとして機能し、静的ファイルを提供します。このため、サーバディレクティブ内に次のコードを挿入する必要があります。

if ( !-e $request_filename ) {
    rewrite /wp-admin$ $scheme://$Host$uri/ permanent;  
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;                     
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;                   
}

静的ファイルのリバースプロキシとしてNginxを使用する場合は、上記のコードを場所の内側に配置する必要があります。すなわち:

location ~ ^.+\.(jpg|jpeg|gif|png|webp|ico|css|Zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|JPG|JPEG|GIF|PNG|ICO|CSS|Zip|TGZ|GZ|RAR|BZ2|DOC|XLS|EXE|PDF|PPT|TXT|TAR|WAV|BMP|RTF|JS) {
if ( !-e $request_filename ) {
    rewrite /wp-admin$ $scheme://$Host$uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}

Nginx + php-fpmを実行する場合(Apacheを使用せず、さらにmod_rewriteを使用してURLを書き換える必要がある場合)、コードをサーバーディレクティブの内側に配置する必要があります。

2
cardy