Wordpress不会保留我的Url参数


Wordpress Won't Keep My Url Params

我在WP网站上工作,每当我添加url参数到url时,它会将页面重定向到没有参数的版本。

的例子:

http://mysite.com/?foo=bar ->重定向到-> http://mysite.com/

http://mysite.com/contact-us/?foo=bar ->重定向到http://mysite.com/contact-us/

我该如何解决这个问题?由于各种原因,我们需要某些参数来加载页面。

.htaccess的内容(编辑添加QSA -不工作):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php$ - [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]
</IfModule>
# END WordPress

你必须使用query_vars来实现这一点。WordPress将所有可能需要的查询字符串参数存储在一个全局对象中,并且忽略其他所有参数。

您需要指示它执行以下操作:

  • 指示WordPress保存你的变量。你给query_vars加了一个过滤器。下面的链接给出了一个例子。
  • 检索您的数据使用$wp_query->query_vars['customvariable']而不是常规的_GET_POST

详情可在此找到:http://codex.wordpress.org/Custom_Queries#Custom_Archives

在重写规则的末尾添加"query string append" (QSA)标志。

'qsappend| QSA ' (query s string append)此标志强制重写将替换字符串的查询字符串部分附加到现有字符串,而不是替换它。想用的时候就用通过重写规则向查询字符串中添加更多数据。

RewriteRule . /index.php [L,QSA]
# Without QSA: http://mysite.com/contact-us/?foo=bar →
#   http://mysite.com/index.php?page_name=contact-us
# With QSA: http://mysite.com/contact-us/?foo=bar →
#   http://mysite.com/index.php?page_name=contact-us&foo=bar

查看Apache文档获取更多信息