在出现404错误的情况下,WordPress可以重定向到“相似页面”吗

时间:2011-08-02 作者:cfischer

这东西快把我逼疯了。以下url不存在,应返回404:http://www.easyjob.net/resume/

然而,如果我尝试访问它,我会得到301到http://www.easyjob.net/r/cover-letter/resume-and-cover-letter/

即使我将重定向添加到。htaccess将其重定向到其他地方,我仍然可以* 301至http://www.easyjob.net/r/cover-letter/resume-and-cover-letter/ 再一次

有人知道发生了什么吗?

PS这是。htaccess:

AddHandler php5-script .php

# 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

#/RESUME/
Redirect        http://www.easyjob.net/resume/ http://www.easyjob.net/r/ [R=301,NC,L]

4 个回复
最合适的回答,由SO网友:Jeremy Jared 整理而成

如果从中删除重定向。htaccess文件,您可以尝试添加自定义404。php模板文件到您的主题。我不确定你到底在问什么。您希望页面重定向,还是希望自定义404页面显示类似的项目?

使用404实现类似帖子的显示。php模板尝试以下操作:

创建一个名为404的php文件。phpAdd将其保存到文件中,然后将其上载到主题目录:

<?php get_header(); ?>
        <div class="container">
<div class="content">
<h2 class="entry-title">Didn\'t Find What You were Looking For?</h2>
<p>Perhaps one of the links below, can help.</p>
<?php  
$rel_tags = get_the_tags();
foreach($rel_tags as $rel_tag)
{
    $rel_tagnames .= $rel_tag->name . \',\';
}
$rel_posts = get_posts(\'tag=\' . $rel_tagnames . \'&post__not_in\' . $post->ID . \'&showposts=5\');
if (count($rel_posts)) : ?>
    <ul>
    <?php foreach((array) $rel_posts as $rel_post) { ?>
        <li><a href="<?php echo $rel_post->post_name ?>"><?php echo $rel_post->post_title ?></a></li>  
    <?php } ?>
    </ul>
<style type="text/css">
#return-home {
display:block;
position:relative;
padding:5px;
font-size:24px;
font-weight:600;
color:black;
margin-top:40px;
}
</style>
<div id="return-home">
<p>
<a href="<?php bloginfo(\'url\'); ?>" title=" <?php bloginfo(\'name\'); ?>">Click to Go to the Home Page:&nbsp;<?php bloginfo(\'name\'); ?></a>
</p>
<?php else : ?>

<?php endif; ?>
            </div>
        </div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
NOTE:你需要将我使用过的div替换为你的主题所具有的div,否则它将看起来不像你网站的其他部分。打开索引。php文件并替换<div class="container"><div class="content">从我的文件和你的主题的div。

SO网友:Matthew Xerri

正在添加

remove_filter(\'template_redirect\',\'redirect_canonical\');  
将产生比解决更多的问题,因为这将启用其他类型的URL。http://www.easyjob.net/http://www.easyjob.net/index.php 将是可访问的,这是非常糟糕的搜索引擎优化,因为你必须网页显示相同的内容。我正在寻找一个解决方案,以阻止Wordpress重定向拼写错误的URL,并将更新你我找到一个

SO网友:Jeroen Pelgrims

我同意@MatthewXeri的回答,更好的解决方案可能是仅在显示的页面是404页面时删除规范重定向过滤器。

这篇文章解释了如何做到这一点:http://scottnelle.com/642/prevent-wordpress-guessing-users-hit-404-error/

function stop_404_guessing( $url ) {
    return ( is_404() ) ? false : $url;
}
add_filter( \'redirect_canonical\', \'stop_404_guessing\' );
本质上,只有当应该显示的页面是404页面时,它才会删除过滤器。

或者,您可以从本期文章中摘取一些内容,编写出一个稍微不同的版本:https://wordpress.stackexchange.com/a/227043

function stop_404_guessing() {
    if (is_404()) {
        remove_action( \'template_redirect\', \'redirect_canonical\' );
    }
}

add_action( \'wp\', \'stop_404_guessing\' );

SO网友:hawkidoki

答案可能有点晚,但如果有人遇到同样的问题,那么您应该尝试以下插件:WP 404 auto redirect to similar post.

长话短说,插件使用template_redirect 过滤并检查是否即将显示404。如果是这样,它将分解URL并查找类似的帖子/分类法/帖子类型。

希望有帮助!

结束

相关推荐

如何在Mac上制作htaccess文件?

我正在尝试为我的网站设置一些永久链接。WordPress警告我的htaccess文件不可写。它提供了一些代码来复制并放入htaccess文件。我在Mac电脑上,我的本地机器运行WordPress 3.1.1。我处理了WP提供的代码,并将其粘贴到一个新的文本编辑文件中,我将其命名为1。htaccess。我把文件放在根目录Sites/mysite/中。然后我尝试重新命名文件并删除“1”,但我的Mac电脑发出警告,文件以“.”开头是系统文件,不允许我重新命名。如何在Mac上创建htaccess文件?非常感谢。-