【问题标题】:Redirect to another website using wordpress and querystring使用 wordpress 和 querystring 重定向到另一个网站
【发布时间】:2015-03-23 07:11:08
【问题描述】:

我是 WordPress 新手,想重定向一些特定的流量。这是一个例子-

  1. 来自不同网站的用户点击网址为http://mywordpresssite.com/redirect?url=http://amazon.in/blablabla的链接

  2. 我希望我的网站将请求重定向到 http://amazon.in/blablabla 或任何查询字符串中的 url,而不加载我网站的任何页面。

  3. 我的网站应该可以正常处理所有其他请求。

我尝试使用 htaccess 并想出了这个 -

RewriteCond %{QUERY_STRING} (?:^|&)url=([^&]+)(?:&|$) [NC]
RewriteRule ^(.*)$ %1 [R=302,L]

但是 RewriteRule 导致 http://mywordpresssite.com/http://amazon.in/blablabla?url=http://amazon.in/blablabla 这是错误的。

我是 htaccess 的新手,如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 你不能只使用wp_redirect() 而不是.htaccess 吗?
  • @mevius 你能告诉我如何使用 wp_redirect() 来做到这一点吗?
  • @mevius 他不希望网站加载任何页面,正如他在第 2 条中所说的那样。

标签: .htaccess redirect wordpress


【解决方案1】:

在站点根目录的 .htaccess 中尝试以下操作。请注意,这应该在您现有的 WordPress mod_rewrite 规则之前,但在 RewriteEngine On 之后。

RewriteCond %{QUERY_STRING} ^url=(.*)$
RewriteRule ^redirect$ %1 [R=302,QSD,L]

%1 指的是RewriteCond 指令中的第一个带括号的子模式(即“url=”之后的所有内容)。

QSD 标志 (Apache 2.4+) 从原始请求中删除查询字符串。

在 Apache 2.4 之前,您需要将 RewriteRule 更改为读取(注意替换末尾的附加 ?):

RewriteRule ^redirect$ %1? [R=302,L]

【讨论】:

  • 谢谢,但在 htaccess.madewithlove.be 上失败,输出 url = http://mywordpresssite.com/http://amazon.in/blablabla?url=http://amazon.in/blablabla
  • htaccess.madewithlove.be 是一个不错的工具,但它并不完美(过去我自己发送了一些错误报告)。在这种情况下,“工具”似乎是不正确的 - 您无法从上述指令中获取该 URL(使用 QSD 标志)。我已经测试了这些指令,它似乎在我的测试服务器上工作正常。但是,这确实需要 Apache 2.4(QSD 仅适用于 Apache 2.4+)
  • 如果您在 RewriteRule 替换是相对的,但事实并非如此。 “工具”似乎没有使用真正的 Apache/mod_rewrite 引擎——他们似乎已经编写了自己的解释器?
  • RewriteRule ^redirect$ %1? [R=302,L,NC,NE] 我用它来使它与编码的 URL 一起工作
  • 次要问题,如果您特别想要不区分大小写的匹配,请仅使用NC 标志(即“重定向”、“reDiRect”、“REDIRECT”等) - 它经常被过度使用。
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 2020-01-31
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2014-08-25
相关资源
最近更新 更多