【问题标题】:Wordpress Won't Keep My Url ParamsWordpress 不会保留我的 URL 参数
【发布时间】:2011-07-13 18:21:50
【问题描述】:

我在 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

【问题讨论】:

  • 请把.htaccess文件的内容放在这里
  • 暂时停用所有插件和非默认主题。再试一次。它仍然重定向吗?

标签: php apache wordpress redirect rewrite


【解决方案1】:

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

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

  • 指示 WordPress 保存您的变量。你添加一个过滤器到query_vars 来做到这一点。下面的链接中给出了一个示例。
  • 使用$wp_query-&gt;query_vars['customvariable'] 而不是常规的_GET_POST 检索您的数据。

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

【讨论】:

  • 这不是答案。这假设页面实际上是使用 url 参数加载的。我的应用在有机会加载之前将它们重定向。
  • AFAIK query_vars 发生在页面加载之前。如果query_vars 数组中不存在您的参数,WordPress 将忽略它并读取 URL 的其余部分并对其进行解析。此外,浏览器上的 URL 确实会发生变化,因为 WordPress 在显示您的页面之前确实会执行一组重定向 - 因此,我相信您的参数不会显示在 URL 中,无论它在 query_vars 中的状态如何 - 取决于您选择的永久链接。
  • 我之前弄错了——我认为 Adhip 在这里是正确的。 WP 默认会删除无法识别的 GET 参数,所以你需要告诉它不要这样做。见webopius.com/content/137/…
【解决方案2】:

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

'qsappend|QSA' (query string apend) 这个标志强制重写 引擎将替换字符串的查询字符串部分附加到 现有的字符串,而不是替换它。当你想用这个 通过重写规则向查询字符串添加更多数据。

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 了解更多信息。

【讨论】:

  • 嗯。哪一个-有很多。 W3TC 页面缓存核心规则是自动生成的。我对触摸这个有点怀疑。我可以将它们添加到 WordPress 规则中吗?
  • 是的,我认为只要添加到 WP 中就可以了。
  • 这不起作用: RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 重写规则。 /index.php [L,QSA] # END WordPress
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
相关资源
最近更新 更多