使用htaccess将WordPress中的旧帖子URL重定向到404

时间:2020-05-19 作者:samjoezzy

在WordPress中,我有一篇带有URL的帖子https://www.example.com/article.html.

我将其永久链接重命名为https://www.example.com/article-new.html.

现在如果我打开旧的URLhttps://www.example.com/article.html 然后它自动301重定向到https://www.example.com/article-new.html 由于默认情况下WordPress内置功能。

但是,我想在有人试图打开时显示404https://www.example.com/article.html.

我试着把这个放进去.htaccess 但它给出了一个500服务器错误:

RewriteEngine On
Redirect 404 /article.html
请告知。

2 个回复
最合适的回答,由SO网友:MrWhite 整理而成

我认为在WordPress中这样做可能是首选的方法,正如@Harrison的回答中所提到的,但是,要回答您的具体问题。。。

RewriteEngine On
Redirect 404 /article.html
旁白:RewriteEngine 然而,指令与mod\\u rewrite相关,Redirect 是mod\\u alias指令-因此这两个指令不相关。

然而,这应该与默认的WordPress前端控制器一起“工作”,因此可能与您的.htaccess 文件

请尝试以下操作,在.htaccess 文件(在任何现有WordPress指令之前):

RewriteRule ^article\\.html$ - [R=404]
如果这仍然导致错误,请尝试在此之前重置404错误文档(为Apache默认值):

ErrorDocument 404 default
您需要清除浏览器缓存以清除缓存(永久)301重定向到新URL。

SO网友:Harrison

我不知道更改htaccess的正确方法,但您可以尝试手动将旧url重定向到404模板。改编自本帖:

Use a template file for a specific url without creating a page

使用示例URL slug:

function wpse_manual_redirect( ){
    $str = \'article.html\';
    $url = parse_url( add_query_arg( array() ), PHP_URL_PATH );
    $url_length = strlen($url);
    $last_segment = substr( $url , $url_length - strlen( $str ) );

    if ( $last_segment === $str ){
        $load = locate_template( \'404.php\', true );
        if ( $load ){
            exit();
        }

    }


}

add_action( \'init\', \'wpse_manual_redirect\' );
包含在函数中。php。

相关推荐

WP_REDIRECT进入无限循环

我想根据位置重定向WordPress页面,例如域名/ar、域名/fr等,但代码进入无限循环。这是飞贼:function redirect_location(){ //$UserDetailss = var_export(unserialize(file_get_contents(\'http://www.geoplugin.net/php.gp?ip=\'))); $UserDetails = unserialize(file_get_contents(\'ht