将 404url 转为搜索
Turn 404 url into search
我想将所有 404 url 转换为搜索字符串。这很容易通过将其添加到 404.php:
$search_term = substr($_SERVER['REQUEST_URI'],1);
$search_404 = str_replace('/','+',$search_term);
$search_404 = str_replace('-','+',$search_404);
$location = "http://example.com/?s=" . $search_404;
session_start();
$_SESSION['search_404'] = true;
header("location: $location");
还应该进行一些消毒,但这不是现在的重点。
我还想进一步取消“?s=”,这样 url 保持不变,但搜索仍然有效。这是possible/how吗?
(我不太担心 SEO,因为页面无论如何都没有索引,但我确实担心与现有页面或安全漏洞的潜在冲突)
更新:显然,如果 wp 本身在其他一切都失败时使用搜索作为最后手段,这应该很简单,即如果没有 post、页面、类别、标签等给定 url,开始搜索查询...有没有办法改变模板层次结构,以便将搜索放在最后?
好的,看起来解决这个问题的一种方法是忽略搜索模板并改用 404 模板 - 就像这样:
$search_term = substr($_SERVER['REQUEST_URI'],1);
$search_404 = str_replace('/','+',$search_term);
$search_404 = str_replace('-','+',$search_404);
$args=array('s' => $search_404, );
query_posts($args);
if(have_posts()) { while (have_posts()) : the_post();
// WHATEVER
endwhile; wp_reset_query(); }
事情现在完成了。
我仍然很好奇是否存在任何冲突或安全漏洞,以及页面是否仍然 returns 404。
我想将所有 404 url 转换为搜索字符串。这很容易通过将其添加到 404.php:
$search_term = substr($_SERVER['REQUEST_URI'],1);
$search_404 = str_replace('/','+',$search_term);
$search_404 = str_replace('-','+',$search_404);
$location = "http://example.com/?s=" . $search_404;
session_start();
$_SESSION['search_404'] = true;
header("location: $location");
还应该进行一些消毒,但这不是现在的重点。
我还想进一步取消“?s=”,这样 url 保持不变,但搜索仍然有效。这是possible/how吗?
(我不太担心 SEO,因为页面无论如何都没有索引,但我确实担心与现有页面或安全漏洞的潜在冲突)
更新:显然,如果 wp 本身在其他一切都失败时使用搜索作为最后手段,这应该很简单,即如果没有 post、页面、类别、标签等给定 url,开始搜索查询...有没有办法改变模板层次结构,以便将搜索放在最后?
好的,看起来解决这个问题的一种方法是忽略搜索模板并改用 404 模板 - 就像这样:
$search_term = substr($_SERVER['REQUEST_URI'],1);
$search_404 = str_replace('/','+',$search_term);
$search_404 = str_replace('-','+',$search_404);
$args=array('s' => $search_404, );
query_posts($args);
if(have_posts()) { while (have_posts()) : the_post();
// WHATEVER
endwhile; wp_reset_query(); }
事情现在完成了。
我仍然很好奇是否存在任何冲突或安全漏洞,以及页面是否仍然 returns 404。