简要

在旧教程基础上额外增加更多解决方案

WordPress搜索防御:搜索页伪静态化

https://www.blueskyxn.com/202101/3328.html

解决方案一

在主题包中的函数文件function.php底部加入代码

//搜索伪静态化
function tongleer_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
exit();
}
}
add_action( 'template_redirect', 'tongleer_search_url_rewrite' );
//code end

加入保存后去前台搜索,就会发现链接地址会跳转到【/search/关键词】了。当然,为了能让搜索直接进入这个页面,而不是 302跳转,我们可以稍微更改一下这个搜索框。

解决方案二

当然如果你是Apache主机,还可以通过如下方法实现

RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]

解决方案三

一般 wordpress主题常规搜索框代码如下:

输入内容,点击搜索后就必然会跳到 ?s=keyword 这个动态页面。所以,我们需要通过js代码来拦截这搜索动作,然后重新定义跳转地址,将代码如下修改即可:


还是比较简单的代码,原理就是给【搜索】这个动作绑定了一个 js函数,而这个 js函数的功能就是获取当前输入的关键词,并拼接成一个新的地址,最后跳转过去即可。

解决方案四

通过根目录 .htaccess 文件更改搜索 URL跳转
根目录 .htaccess 文件通常用于设置重定向和其他网站的配置任务。这里也可以使用它来更改 WordPress 中的默认搜索链接地址。

该 .htaccess 文件位于网站的根文件夹中,你需要使用 FTP 或文件管理器应用程序对其进行编辑修改。

在你的 .htaccess 文件中添加下面的2、3行代码:

# Change WordPress search URL
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]

添加修改完后保存并将 .htaccess 文件上传回网站根目录。

解决方案五

在一的基础上,使用CloudFlare页面规则做转发

比如XXXX/?s=*

的规则为:转发 URL (状态代码: 301 - 永久重定向, URL: https://XXXX/search/*)

解决方案六

在一的基础上类似页面规则,在服务器做重定向,301/302都可以,前后端都行,一起也行

我是如何做的

因为我所有流量都有走cloudflare,所以写好函数后,在cf做页面规则即可