我想重定向到这样的静态URL:
E.g。如果有人导航到我的服务器上的..test
,他应该被重定向到http://example.tld/hello%20world
。
我试过了:
RewriteRule test$ http://example.tld/hello%20world [L,R]
但是重定向到http://example.tld/hello0world
。我尝试了标记NE
和B
,并尝试将实际的空格字符放入(导致Internal Server Error
)。我试过了hello%2520world
。我甚至注意到hello%%920world
会给我预期的结果(中间的%9
显然会被忽略),但这很难设计得那样,是吗?
我应该如何实际指定重定向?
答案 0 :(得分:1)
好的,我花了一些时间找到文档的正确部分,但现在我明白了:
Here它说:
反向引用(%N)到最后匹配的RewriteCond模式
因此,%20
被解释为反向引用%2
(为空)和文字0
。 here它说:
从Apache 1.3.20开始,TestString和Substitution字符串中的特殊字符可以通过在其前面添加反斜杠('\')字符来进行转义(即,将其视为普通字符而没有通常的特殊含义)。换句话说,您可以使用'\ $'在Substitution字符串中包含实际的美元符号字符;这使得mod_rewrite不会试图将其视为反向引用。
本章只讨论$
,实际上我认为我以前从未见过任何形式的%N,但\
的转义也适用于%