Wordpress %postname% 永久链接破坏静态主页 (301)

Wordpress %postname% permalinks break static homepage (301)

所以我遇到这个问题有一段时间了,我似乎找不到合适的解决方案。

每当我启用 %postname% 永久链接时,我的静态主页 https://example.com/xy 就会停止工作并出现 301“站点未正确重定向”错误,而站点上的任何其他帖子或页面都可以正确重定向,例如 https://example.com/xy/about-us 有效。

如果我恢复为普通链接,我没有任何问题。 我注意到的两件事是,如果我在主页末尾添加“index.php”,它将再次加载,例如 https://example.com/xy/index.php.

如果我在 wp-config.php 中设置站点 url,

%postname% 永久链接也有效

define( ‘WP_HOME’, ‘http://example.com/xy’ );

define( ‘WP_SITEURL’, ‘http://example.com/xy’ );

但是我需要保持站点 url 路径相对,所以这不是一个理想的修复。

我试过禁用所有插件并将主题更改为默认主题,但均无济于事。 我已经为我的根目录启用了 AllowOverride。 我在 apache 中启用了 mod 重写,我的 .htaccess 是由 WP 生成的,看起来像这样:

RewriteEngine On
RewriteBase /xy/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xy/index.php [L]
</IfModule>

所以我通过在 functions.php

中添加以下内容来解决这个问题
function disable_front_page_redirects($redirect_url) {
        if( is_front_page() ) {
                $redirect_url = false;
        }

        return $redirect_url;
}

add_filter( 'redirect_canonical', 'disable_front_page_redirects' );