我有这样的网址:
http://www.sample.com/do/example/v1/abcd
我想将其重定向到:
http://sub.sample.com/some/test/do/example/v1/abcd
所以我创建了一个.htaccess
文件并使用 RewriteRule 来执行此操作:
RewriteCond %{HTTP_HOST} ^(www\.)?sample\.com$
RewriteCond %{REQUEST_URI} ^/do/(.*)$
RewriteRule ^(.*) http://sub.sample.com/some/test/do/%1
一切正常,直到" abcd"改为" PjX7%2Bj69"有%2B转义字符。所以使用此URL:
http://www.sample.com/do/example/v1/PjX7%2Bj69
我明白了:
404 Not Found | The requested URL do/example/v1/PjX7+j69 was not found on this server.
正如我们所注意到的,Apache更改了" PjX7%2Bj69 "参数为" PjX7 + j69 "。所以我使用NE Flag
来禁用解码:
RewriteRule ^(.*) http://sub.sample.com/some/test/do/%1 [NE]
但它没有用。
如何阻止Apache URL解码?
答案 0 :(得分:0)
这不是NE
flag的用途。
无论如何,这些路径应该是等效的,因为您应该在子域中解码这些序列。如果你真的无法纠正,我认为这是真正的问题,你可以使用原始的,未解码的URL:
RewriteCond %{HTTP_HOST} ^(?:www\.)?sample\.com$
RewriteCond %{THE_REQUEST} ^\S+\s+/do/(.*)\s
RewriteRule ^ http://sub.sample.com/some/test/do/%1 [R,END]