域映射后,Wordpress 4.9.4多站点(子目录)永久链接断开

时间:2018-05-02 12:41:11

标签: wordpress .htaccess url-rewriting permalinks multisite

我们有一个 Wordpress 4.9.4多站点,具有子目录类型的站点结构。不是直接安装在www中,而是安装在子目录中。

基本网址如下:http://a.a/a
网站网址如下:http://a.a/a/a
页面网址如下:http://a.a/a/a/a
永久链接在任何环境中都能正常工作。

我们开始使用内置的Wordpress功能(无插件)将域映射到子网站,方法是在Sites-> Site-> Edit中设置新域名
例如:http://a.a/a/a - > http://b.b

wp_options 表格中设置了相关值(主页和基本网址),并且网站正在运行。

问题:我们只能使用默认的永久链接结构,因为任何其他结构都会引发500内部服务器错误。 例如:http://b.b/?page_id=10有效,http://b.b/b没有。

wp-config.php 包含以下内容(可能不相关):

// Multisite
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'a.a');
define('PATH_CURRENT_SITE', '/a/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
// Domain mapping cookie settings
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

的.htaccess

RewriteEngine On
RewriteBase /a/
RewriteRule ^index\.php$ - [L]
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]

问题:我们如何使http://b.b/b类型永久链接有效?

修改 经过漫长的搜索和一些反复试验,我找到了一个半解决方案。

在永久链接设置中选择自定义结构,然后输入 index.php /%postname%

这种方式虽然我们必须使用http://b.b/index.php/b链接结构,但至少它不是?page_id = 123。 Wordpress已经有了从url中删除index.php的规则,但它似乎没有扩展到映射域。

您是否知道如何从映射域中的网址中删除index.php?

1 个答案:

答案 0 :(得分:0)

有效的修改后的处理方式

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
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).*) a/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ a/$2 [L]
RewriteRule . index.php [L]

此外,请确保.htaccess所有者用户具有对mod_rewrite模块的正确访问和使用特权。