【问题标题】:Fix broken GET variable修复损坏的 GET 变量
【发布时间】:2014-02-06 17:01:08
【问题描述】:

我正在使用 GET 变量来选择要在页面上显示的特定项目。我的网址通常如下所示:

/?type=xxxx

然后我有一个登录插件 (Wordpress),它在提交时将 ?redirect=ok 添加到 URL。不幸的是,这会使 URL 看起来像:/?type=xxxx?redirect=ok,它破坏了先前的变量。

我正在尝试以某种方式编辑该 URL。我想了几个方法:

  • .htaccess 查找并重写 ?redirect=ok 为空白或 &redirect=ok
  • PHP 从字符串中剥离该部分,然后重定向

这些似乎都不起作用。

任何帮助将不胜感激。

【问题讨论】:

  • 好吧,你为什么不直接编辑插件并计算get参数呢?如果已经有一些插件添加 &redirect=ok 否则插件添加 ?redirect=ok
  • 要么编辑插件以使用 add_query_arg(),它将为您处理 URL 解析。或者,编辑您正在创建的链接以使用add_query_arg()。更多信息:codex.wordpress.org/Function_Reference/add_query_arg
  • 我确实想过,但我没有编写插件,所以我不知道该代码的确切位置。不过,我已经向开发人员寻求帮助。
  • 要追踪它,请尝试在 IDE 中查找或 grep -Rn "?redirect=ok" /path/to/my/site" 为您提供代码所在的可能位置。这将帮助我们帮助您(如果您提供代码)

标签: php wordpress .htaccess redirect get


【解决方案1】:

这里是mod_rewrite 修复这个奇怪的问题。

将此代码作为第一条规则放入您的DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+([^?]*\?type=.*?)\?(redirect=ok) [NC]
RewriteRule ^ %1&%2 [R=301,L]

【讨论】:

  • 所有答案都是有效且值得赞赏的,但对于像我这样的新手来说,这个答案是最快和最简单的。谢谢!
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 2013-04-22
  • 2010-11-29
  • 2011-09-04
相关资源
最近更新 更多