情况如下:
配置
我有一个 WordPress 多站点设置,其中不同的站点位于不同的域上。其中一些站点包含在其域中的子文件夹中,有些则不包含。对于它们位于子文件夹中的站点,所有站点的子文件夹名称都相同。
以下是示例:
Site | URL
-----------------------
Main site | example.com
Site A | sitea.com
Site B | siteb.com/foo
Site C | sitec.com/foo
Site D | sited.com
这是我的 wp-config.php 的相关部分:
/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
这是我的.htaccess:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
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]
# END WordPress
问题
在此配置中,主站点和站点 A 和 D 工作,但站点 B 和 C 给出 500 错误。如果我更改RewriteBase /
为,RewriteBase /foo/
则相反:站点 B 和 C 工作,但主站点、站点 A 和站点 D 给出 500 错误。
如果 的效果RewriteBase /foo/
仅在有条件的基础上应用于 URI 以 开头的域/foo
,那么我认为这将解决问题。不幸的是,我不明白 WordPress 和 .htaccess 如何很好地交互来做到这一点。
有没有人有什么建议?
谢谢你。