我刚刚将我的子域多站点移动到一个新服务器,我在permalinks&;方面遇到了一些问题;重定向。
移动后的一个区别是,我已将核心WP文件移动到它自己的目录中/wp
(参见roots/bedrock folder structure.
现在当我尝试访问/wp/wp-admin
, 我被重定向到/wp-login.php?redirect_to=...
当然是404,因为该文件不存在。
但是,如果我在配置中注释掉多站点常量,我可以作为非多站点访问wp admin,而不会出现问题(这就是我如何确保我拥有下面的权限。htaccess-来自工具>网络设置)。
我有.htaccess
使用WP为多站点指示的规则进行设置:
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) wp/$1 [L]
RewriteRule ^(.*\\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
另一个问题是,即使关闭了multisite,当我尝试转到主页以外的任何页面时,也会得到404。
我读到multisite在DB中存储了一些路径信息,所以可能需要搜索/替换?
更新1时,我能够解决*在尝试访问wp admin时重定向到404的问题。这仅仅是由于需要在数据库中对siteurl
. 我知道这个价值观was superceeded by the WP_SITEURL constant. 多站点的情况似乎并非如此,可能是因为每个站点的情况都不同。一旦我纠正了siteurl
在每个站点的选项表中,该站点将起作用(可以联系wp admin)。
2个问题仍然存在Permalinks are still not working as they should. 现在我可以访问wp admin了,我已经进入并重新保存以更新permalink结构,这似乎没有任何效果。我的意思是,当我导航到任何远离该网站首页的地方时,我会得到404。
Network admin is inaccessible via the admin bar. 它提供给我的网络管理员的URL缺少/wp
目录如果我直接访问它,/wp/wp-admin/network/
-- 它起作用了。出于某种原因,管理栏中生成的URL缺少此URL,并且已断开。如果我改变define(\'PATH_CURRENT_SITE\', \'/\');
到define(\'PATH_CURRENT_SITE\', \'/wp/\');
, 这些URL是正确的,但尝试访问它们失败。在这种情况下,这似乎不是正确的做法,正如人们所期望的那样/wp-admin/network/setup.php
.经过一些挖掘,我发现这些链接是由network_admin_url()
. 基本上,负责的代码行是set_url_scheme( \'http://\' . $current_site->domain . $current_site->path, $scheme );
从…起network_site_url()
.更新2我能够解决permalink问题。事实证明,这实际上是apache中的虚拟主机配置!我有AllowOverride none
为我的网站设置<Directory>
指令,我认为这阻止了任何。htaccess重写规则。我早该意识到这是事实,因为我得到的404是来自apache,而不是wordpress。。。
此时唯一剩下的奇怪之处是network_admin_url()
. 如果我弄明白了,我会发布一个答案。