【问题标题】:Redirect subdomain of wordpress admin using .htaccess with query strings使用带有查询字符串的 .htaccess 重定向 wordpress admin 的子域
【发布时间】:2017-06-29 00:45:46
【问题描述】:

我一直在浏览互联网,但无法找到解决此问题的方法,因此非常感谢任何帮助。

场景

我想通过附加另一个查询字符串来重定向带有查询字符串的子域文件。例如:

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value&new=string

尝试

我需要在 .htaccess 中添加这个重定向规则。我尝试过 QSA 附加但无济于事:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} key=value
    RewriteRule ^admin\.php$ /admin.php?new=string [QSA,L]
</IfModule>

您认为解决方案是什么?

【问题讨论】:

  • 如果你想要一个 Redirect,你需要 R 标志。你上面的是一个internal rewrite,很可能和WordPress的路由冲突。
  • 感谢您的建议。我是否需要将rewrite rule 重新格式化为RewriteRule ^admin\.php$ /admin.php?foo=bar&amp;key=value&amp;new=string [R=301,L] 之类的格式?
  • 另外,这个.htaccess 文件在哪里?
  • 在子域内,如:root/public_html/sub/.htaccess

标签: wordpress .htaccess redirect mod-rewrite


【解决方案1】:

您现有的规则是内部重写。要将其变为重定向,您只需添加 R 标志。但是,您似乎还缺少 URL 中的 /wp-admin 路径段?

所以,试试这样的:

RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !^new=string
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?new=string [R,QSA,L]

与您的原始代码一样,这只是检查查询字符串中的key=value,而不是源网址中的foo=bar&amp;key=value

更新:第二个RewriteCond 指令通过确保new=string 不存在于查询字符串的开头来防止重定向循环。

QSA 标志会导致请求中的查询字符串被附加到替换中。因此,生成的 URL 将变为 ...?new=string&amp;foo=bar&amp;key=value,而不是您最初要求的 ?foo=bar&amp;key=value&amp;new=string - 这是一个问题吗?


更新:如果您特别需要将new=string URL 参数附加 到查询字符串,那么您应该删除QSA 标志并使用QUERY_STRING 服务器改为变量。例如:

RewriteCond %{QUERY_STRING} key=value
RewriteCond %{QUERY_STRING} !new=string$
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?%{QUERY_STRING}&new=string [R,L]

【讨论】:

  • 感谢您的建议。我认为这很接近,但并不完全。我想在末尾附加new=string。但是,使用[R,QSA,L] 标志,new=string 查询会在 URL 中无休止地重复,因此会出现错误。我尝试了[R,L] 标志并在RewriteRule 的末尾使用确切的URL,即/wp-admin/admin.php?foo=bar&amp;key=value&amp;new=string [R,L]。这让我找到了正确的 URL,但出现了 ERR_TOO_MANY_REDIRECTS。有什么建议吗?
  • 啊,是的,抱歉,需要一个额外的条件来防止重定向循环。我已经更新了我的答案,并包含了一个在查询字符串末尾而不是开头附加 URL 参数的示例。
  • 这正是我所需要的。从来没想过第二个条件。谢谢!
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 2016-01-18
  • 2017-04-13
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
相关资源
最近更新 更多