无法重定向URL包含%00

时间:2017-05-19 07:43:14

标签: linux apache .htaccess

我想将包含符号和数字的网址,字符重定向到其他网址以及...最后包含%00的网址需要重定向到其他网址。

示例:

www.example.com/asdnsadnas%00重定向到其他网址

%00未被重定向网址接受,请帮帮我。

1 个答案:

答案 0 :(得分:1)

你如何处理这真的取决于其他什么"符号和数字"你指的是URL出现在哪里。

由于RewriteRule 模式与%-decoded网址路径匹配,%00 NULL ,因此要抓住%00在URL路径中,您可以尝试与THE_REQUEST进行匹配,其中包含请求的第一行 raw (不是%-decoded)。

  

www.example.com/asdnsadnas%00重定向到其他网址

例如,在根.htaccess文件的顶部附近尝试以下操作:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /asdnsadnas%00\ HTTP
RewriteRule ^asdnsadnas /another-url [R,L]

RewriteRule 模式只检查网址的第一部分,直到%00

如果您只是想重定向/asdnsadnas并忽略该网址路径后面的所有内容,那么您就不需要明确检查%00,因此您可以删除{{1}指令。

  

RewriteCond需要重定向到www.example.com.nz/XYZABC%00 - 任何字母或符号等,但我需要最后www.example.com.nz/insurance-hub-page/xsserror/ XYZABC的任何网址,需要重定向到另一个网址。

(我假设目标网址中的 space 只是错字?)

在这种情况下,您不一定需要匹配%00(一个"字符"您不想要的)。只是要具体说明你想要匹配的字符(这可能是一个较小的子集)。

例如,以下内容会将%00重定向到/XYZABC。尾随/insurance-hub-page/xsserror/XYZABC将被忽略。

%00
  

...但我需要在结尾RewriteRule ^(\w+) /insurance-hub-page/xsserror/$1 [R,L] 处的任何网址都需要重定向到另一个网址。

不确定你是什么意思?

  

如果网址包含任何需要重定向到其他网址的特殊字符或符号等示例:%00

您可以检查请求的网址是否包含任何%编码字符,这似乎符合您的示例:

www.example.com/%28dsajkd%20nkasd%20daskdasj%00