我们正在使用WordPress,我想要做的是将任何请求重定向到我们的主要博客页面,其中包含查询字符串,没有查询字符串的主博客页面。唯一的例外是搜索查询。
因此:
/blog/?gibberish
应重定向到/blog/
/blog/?gibberish=gibberish
应重定向到/blog/
/blog/?s=cats
应该正常处理,而不是重定向
为简单起见,这里是默认的WordPress重定向规则
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress
这是我到目前为止所尝试的内容
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
RewriteCond %{QUERY_STRING} .
RewriteRule ^$ http://domain.com/ [R=301,L]
# END WordPress
然而,这会在浏览器中出现错误,指出页面没有正确重定向。
我们想要这样做的原因是因为我们正在使用缓存插件,但它不会使用查询字符串缓存请求。目前,我们有大量恶意请求使用无意义的查询字符串,这些请求绕过缓存并导致服务器上的负载。
答案 0 :(得分:0)
您也可以在functions.php
中执行此操作,在init
上执行一项功能,以检查错误查询并根据需要重定向。
add_action('init', 'redirectQuery', 0);
function redirectQuery(){
if( isset($_GET['gibberish']) == true ){
wp_redirect(home_url(), 301);
die();
}
}