WordPress重定向主页,查询字符串到主页,没有查询字符串

时间:2015-09-16 13:10:40

标签: php wordpress .htaccess mod-rewrite redirect

我们正在使用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

然而,这会在浏览器中出现错误,指出页面没有正确重定向。

我们想要这样做的原因是因为我们正在使用缓存插件,但它不会使用查询字符串缓存请求。目前,我们有大量恶意请求使用无意义的查询字符串,这些请求绕过缓存并导致服务器上的负载。

1 个答案:

答案 0 :(得分:0)

您也可以在functions.php中执行此操作,在init上执行一项功能,以检查错误查询并根据需要重定向。

add_action('init', 'redirectQuery', 0);
function redirectQuery(){
    if( isset($_GET['gibberish']) == true ){
            wp_redirect(home_url(), 301);
            die();
    }
}