在出售房屋并且房源离线后,我们在房地产网站上收到了大量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>
答案 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' );