我有一个基于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]
(每个作者)