mod_rewrite:重定向到包含编码值的URL

时间:2014-04-16 13:19:45

标签: mod-rewrite

我想重定向到这样的静态URL:

E.g。如果有人导航到我的服务器上的..test,他应该被重定向到http://example.tld/hello%20world。 我试过了:

RewriteRule test$ http://example.tld/hello%20world [L,R]

但是重定向到http://example.tld/hello0world。我尝试了标记NEB,并尝试将实际的空格字符放入(导致Internal Server Error)。我试过了hello%2520world。我甚至注意到hello%%920world会给我预期的结果(中间的%9显然会被忽略),但这很难设计得那样,是吗?

我应该如何实际指定重定向?

1 个答案:

答案 0 :(得分:1)

好的,我花了一些时间找到文档的正确部分,但现在我明白了:

Here它说:

  

反向引用(%N)到最后匹配的RewriteCond模式

因此,%20被解释为反向引用%2(为空)和文字0here它说:

  

从Apache 1.3.20开始,TestString和Substitution字符串中的特殊字符可以通过在其前面添加反斜杠('\')字符来进行转义(即,将其视为普通字符而没有通常的特殊含义)。换句话说,您可以使用'\ $'在Substitution字符串中包含实际的美元符号字符;这使得mod_rewrite不会试图将其视为反向引用。

本章只讨论$,实际上我认为我以前从未见过任何形式的%N,但\的转义也适用于%