我想将所有404网址转换为搜索字符串。这可以通过将其添加到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 =”,所以网址保持不变但搜索仍然有效。这可能/怎么样?
(我不太担心搜索引擎优化,因为页面没有索引,但我确实担心与现有页面或安全漏洞的潜在冲突)
更新:显然,如果wp本身在其他所有方法都失败时使用搜索作为最后的手段,即如果没有帖子,页面,类别,标签等给定网址,则应该很简单,启动搜索查询...有没有办法改变模板层次结构,以便将搜索放在最后?
答案 0 :(得分:1)
好的,看起来这样做的一种方法是忽略搜索模板并改用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(); }
现在这件事就完成了。
如果可能存在任何冲突或安全漏洞且页面仍然返回404,我仍然很好奇。