Wordpress不会保留我的Url Params

时间:2011-07-13 18:21:50

标签: php apache wordpress redirect rewrite

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

示例:

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

2 个答案:

答案 0 :(得分:0)

将“查询字符串追加”(QSA)标记添加到重写规则的末尾。

  

'qsappend | QSA'( q uery s tring a ppend)此标志强制重写   引擎将替换字符串的查询字符串部分附加到   现有的字符串,而不是替换它。如果您愿意,请使用此选项   通过重写规则向查询字符串添加更多数据。

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 documentation

答案 1 :(得分:0)

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

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

  • 指示WordPress保存变量。您可以向query_vars添加过滤器来执行此操作。下面的链接给出了一个例子。
  • 使用$wp_query->query_vars['customvariable']而非常规_GET_POST检索您的数据。

详情请见:http://codex.wordpress.org/Custom_Queries#Custom_Archives