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' );
所以我遇到这个问题有一段时间了,我似乎找不到合适的解决方案。
每当我启用 %postname% 永久链接时,我的静态主页 https://example.com/xy
就会停止工作并出现 301“站点未正确重定向”错误,而站点上的任何其他帖子或页面都可以正确重定向,例如 https://example.com/xy/about-us
有效。
如果我恢复为普通链接,我没有任何问题。
我注意到的两件事是,如果我在主页末尾添加“index.php”,它将再次加载,例如 https://example.com/xy/index.php
.
%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' );