如何禁用 WordPress-htaccess-file 中的自动重定向

如何禁用 WordPress-htaccess-file 中的自动重定向

WordPress 在其 htaccess 文件中有一个功能,如果文件名与现有源匹配,则执行自动重定向。

例如如果你输入http://rechnen-in-der-wolke.net/datensicherheit它将重定向到http://rechnen-in-der-wolke.net/datensicherheit-cloud-anbieter-hagel-it/

如何在不影响整体功能的情况下禁用此功能?

默认的 htaccess 文件如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我已经尝试删除 RewriteCond %{REQUEST_FILENAME} !-f(没有任何变化)或RewriteCond %{REQUEST_FILENAME} !-d(没有任何变化)或它们两者(重定向循环)。

答案1

我在这里找到了我的问题的解决方案:https://wordpress.stackexchange.com/questions/3326/301-redirect-instead-of-404-when-url-is-a-prefix-of-a-post-or-page-name

必须在 functions.php 中插入以下代码:

add_filter('redirect_canonical', 'no_redirect_on_404');
function no_redirect_on_404($redirect_url)
{
    if (is_404()) {
        return false;
    }
    return $redirect_url;
}

感谢所有帮助我的人!

答案2

Wordpress 不会随意重定向您的 URL - 但它会将每个旧 URL 与其创建的帖子一起存储,即使不再使用。

如果您更改了帖子 slug,Wordpress 会将旧 URL 重定向 (301) 到新 URL。这与 .htaccess 无关,这是 wordpress 的一个功能。不幸的是,我从未在 codex 中看到过此功能的正确记录。因此,我无法告诉您哪个 wp_core 函数执行此操作以及它位于核心中的哪个位置(您不想触碰核心,对吗?)。

以前使用的 slug 存储在数据库中的wp_postmeta表中。检查_wp_old_slugmeta_key 列(实际的 slug 存储在 meta_value 列中)。如果您希望在特定情况下不发生此默认行为,则可以在此处删除值并搜索“已使用”的 URL。

相关内容