【问题标题】:Wordpress 4.9.4 multisite (subdirectory) permalinks broken after domain mappingWordpress 4.9.4 多站点(子目录)永久链接在域映射后断开
【发布时间】: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


    【解决方案1】:

    修改后的 HTACCESS 可以工作:

    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 owner 用户具有 mod_rewrite 模块的正确访问权限和使用权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多