我正在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
答案 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存储它在全局对象中可能需要的所有查询字符串参数,并忽略其他所有参数。
您需要指示它执行以下操作:
query_vars
添加过滤器来执行此操作。下面的链接给出了一个例子。$wp_query->query_vars['customvariable']
而非常规_GET
或_POST
检索您的数据。详情请见:http://codex.wordpress.org/Custom_Queries#Custom_Archives