【发布时间】:2015-06-13 06:06:11
【问题描述】:
我想将所有 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 =”,因此网址保持不变,但搜索仍然有效。这可能/如何?
(我不太担心 SEO,因为这些页面无论如何都没有索引,但我确实担心与现有页面的潜在冲突或安全漏洞)
更新:显然,如果 wp 本身在其他一切都失败时将搜索作为最后的手段,这应该很简单,即如果没有给定 url 的帖子、页面、类别、标签等,则开始搜索查询...有没有办法改变模板层次结构以便将搜索放在最后?
【问题讨论】:
-
... 只需执行 htaccess 404 重定向
-
确实尝试过,但它最终进入了重定向循环。这是我使用的代码:
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC] RewriteRule ^$ /%1/? [NC,R,L]
标签: php .htaccess redirect search http-status-code-404