将旧IDX主页列表页面重定向到搜索页面

时间:2018-05-08 18:53:09

标签: .htaccess redirect idx

在出售房屋并且房源离线后,我们在房地产网站上收到了大量404错误。我正在尝试通过htaccess将Google Search Console显示为404的缺失网页重定向到主页列表搜索页面。我已经尝试了下面的代码,但它重定向所有列表页面,而不仅仅是那些不再存在的页面。不确定这是我的代码还是因为页面是动态创建的。

所有主页列表均位于www.example.com/homes-for-sale-details/[address]下。如果列表不再存在,我希望该页面重定向到www.example.com/homes-for-sale-details。

我的htaccess代码

MINUS

我哪里出错?

非常感谢!

编辑(添加了更多htaccess代码):

# Redirect old home listing to a search page
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^homes-for-sale-details/(.*)$ https://www.example.com/homes-for-sale-details [L,NC,R=301]
</IfModule>

2 个答案:

答案 0 :(得分:1)

我试图让它与.htaccess文件一起使用,但却无法使用.htaccess文件。上面的脚本问题是您没有先检查404错误,因此所有来自该“文件夹”的请求都被重定向。我已经尝试在.htaccess文件中使用ErrorDocument指令而没有运气,所以我解决的解决方案是使用wordpress已经提供的。在你的主题子文件夹(/ wp-content / themes / THEMENAME)中应该有一个404.php文件。如果它不存在,你可以创建它。您可以使用此文件顶部的一些代码来解析请求URL并重定向页面。这样的事情应该有效:

<?php 
    if (strpos($_SERVER['REQUEST_URI'], 'homes-for-sale-details') !== false)
         header('Location: /homes-for-sale-details', true, 301);
    else {
?>
    // ... paste the current 404.php content here
<?php } ?>

请记住备份您当前的404.php页面,以防您覆盖您不想要的内容。如果你想尝试使用htaccess中的ErrorDocument东西作为我的客人,但无论出于何种原因,它对我不起作用。 Here's a post that shows how to do that

祝你好运!

答案 1 :(得分:0)

在试图找到一个htaccess回答失败之后,苗条的答案让我感到厌烦,我发现了这篇文章WordPress Template Redirect(非常感谢你的帮助!)

以下是我对该代码所做的修改。

// Redirect missing home listing to a search page.
function __404_template_redirect()
{
    if( is_404() )
    {
        $req = $_SERVER['REQUEST_URI'];

        if ( is_file( $req )) {
            return; // don't reduce perf by redirecting files
        }

        // check if "homes-for-sale-details" is in the URL
        if ( strpos($req, 'homes-for-sale-details') == false ) {
            return; // only redirect missing homes
        }

        // pull the parent directory and convert to site url
        $parent_url = get_permalink( 1232 );

        // redirect to parent directory
        wp_redirect( $parent_url, 301 );
        exit();
    }
}
add_action( 'template_redirect', '__404_template_redirect' );