【发布时间】:2018-10-12 13:54:34
【问题描述】:
我们有一个 Wordpress 4.9.4 具有子目录类型站点结构的多站点。不是直接安装在 www,而是安装在子目录中。
基本网址如:http://a.a/a
一个网站网址就像:http://a.a/a/a
页面 url 就像:http://a.a/a/a/a
永久链接在任何设置下都可以正常工作。
我们开始使用内置的 Wordpress 功能(无插件)将域映射到子站点,方法是在站点->站点->编辑中设置新域名
例如:http://a.a/a/a -> http://b.b
在 wp_options 表中设置了两个相关值(主页和基本 url),并且网站正在运行。
问题:我们只能使用默认的永久链接结构,因为任何其他结构都会引发 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 的规则,但它似乎没有扩展到映射的域。
你知道从映射域中的 url 中删除 index.php 的方法吗?
【问题讨论】:
标签: wordpress .htaccess url-rewriting permalinks multisite