【问题标题】:.htaccess not redirecting when url contains ? or =.htaccess 在 url 包含时不重定向?或 =
【发布时间】:2014-02-01 05:16:12
【问题描述】:

如果传入的 URL 包含某些文本,因为这确实有问题,谁能告诉我如何重定向..

例如:

RedirectMatch 301 /files/9453041/batch-BiDA http://secondsite.com(这工作)

RedirectMatch 301 /?load=/files/9453041/batch-BiDA http://secondsite.com(这不起作用)

只有上述两个重定向中的第一个有效,不知道为什么,但包含 /?load= 的第二个不重定向。有人可以告诉我我需要在第二行进行哪些更改才能使其正常工作吗?

或者,也许我在想,如果可以将每个具有“mysite.com/?load=/whatever/whatever”的传入网址重定向到“mysite.com/whatever/whatever”,它是否无法工作?

非常感谢您的帮助...

【问题讨论】:

  • 逃脱?和 = 带反斜杠:\?和 \= 所以它看起来像 /\?load\=/files.....
  • @Deryck RedirectMatch 与查询字符串不匹配。你需要 mod 重写,而不是 mod 别名。
  • @Ohgodwhy 真实故事 ^

标签: php .htaccess mod-rewrite redirect


【解决方案1】:

为了匹配查询字符串(? 之后的所有内容),您需要使用重写条件匹配 %{QUERY_STRING} 变量:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/9453041/batch-BiDA
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]

您也可以使用[OR]:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/9453041/batch-BiDA [OR]
RewriteCond %{QUERY_STRING} ^load=/files/35356441/batch-546A 
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]

等等

但如果您不关心 /files/ 部分后面的内容,只需匹配数字即可:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/[0-9]+/batch-[0-9A-Za-z]+ 
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]

【讨论】:

  • 感谢您的帮助 :) 我取得了部分成功,但在使用建议的代码时需要解决问题...我遇到的问题是我有很多链接需要重定向但是当我添加到上述代码中的任何 url 包含一个左括号“(”时,该代码会导致服务器不可用错误,我有许多带有字符 +(等和左括号的链接)这些 url 链接超出了我的控制范围,所以我的问题我该如何继续...
  • 处理这个链接重定向吗? ^load=/storage/6780109/seven_7_(Active+_v2.0.6_Reloaded_-DAN_%5BTeam
  • 我可以使用任何通配符或部分匹配来解决这些问题字符吗?再次感谢您的帮助,我用它把我的头发拉了出来! :p
  • 其实我想我已经通过用句号替换特殊字符来解决这个问题。似乎正在工作,唯一的事情是我必须这样写,或者它在 RewriteCond %{QUERY_STRING} ^load=/files/9453041/batch-BiDA RewriteRule ^/?$ secondsite.com [L,R= 301] RewriteCond %{QUERY_STRING} ^load=/files/35356441/batch-546A RewriteRule ^/?$ secondsite.com [L,R=301] 我必须在每个条件之后都执行规则是否有解决方法?非常感谢您的帮助...
  • @user2872083 如果您在/files/ 位之后有特定数字,那么您别无选择,只能枚举它们,但您至少可以将它们与[OR] 链接在一起。否则,如果您不关心数字是什么,您可以匹配任何数字,请参阅上面的编辑
猜你喜欢
  • 2013-07-04
  • 2014-05-24
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2012-07-21
  • 2012-05-05
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多