URL查询string导致布局中断

我有一个基于Apache服务器的WordPress的网站,重写URL是“漂亮”。

当我在URL中包含一个查询参数时,网站会中断。

所以:

http://mysite.com 

工作正常,但:

 http://mysite.com/?anything 

不加载页面内容,但无法加载我在主页上使用的一些插件。

如果你能解释为什么会发生这种情况,我很乐意听到。 否则,我只想完全剥离查询参数,以便请求:

 http://mysite.com/?anything 

会像请求一样行事:

 http://mysite.com 

通过redirect或通过简单地删除查询string。

这是我当前的.htaccess:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Handle redirection from https to http RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301] # End https to http redirection RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{QUERY_STRING} ^index.php$ RewriteRule . /index.php [L] </IfModule> # END WordPress 

既然我自己回答了这个问题,然后我的问题被编辑出来,我将作为“自己的答案”input。

添加以下解决我的问题:

 RewriteCond %{THE_REQUEST} \?[^\ ]+ RewriteRule (.*) /$1? [R=301,L] 

嘿@Lothar_Grimpsenbacher,

所以我认为这可能不是一个.htaccess的问题,可能是一个WordPress的小姐的概念。 我会尽量简单地解释一下。

WordPress有一些来自variables的query_vars,如果你有激活的“漂亮”的永久链接(看起来像你的.htaccess的规则),问题是?anything是一个GET参数不是预期的WordPress可能认为这是一个404的情况,取决于什么是variables。

据我所知,我不会为了解决这个简单的问题而乱搞.htaccess文件,以后可能会给你带来严重的问题。

我认为你的问题的解决scheme在于WordPress能够看到通过的variables是有效的,请检查下面的解决scheme:

 function prefix_add_query_vars() { global $wp; $wp->add_query_var('anything'); } add_filter('init', 'prefix_add_query_vars'); 

在你的模板页面中,你可以检查这样的值:

 if ( get_query_var('anything') ) { //do your stuff } 

PS:我不擅长.htaccess文件规则我自己…

 RewriteCond %{THE_REQUEST} \?[^\ ]+ RewriteRule (.*) /$1? [R=301,L] 

(每个作者)