我的文件系统中有以下文件
/http/domain/www.punchedin.com/hello%20world.txt
注意%20是文字的,不应转换为空格。
可以使用以下URL访问该文件
http://www.punchedin.com/domain/www.punchedin.com/hello%2520world.txt
我有以下.htaccess规则
RewriteRule ^home/(.*)$ /domain/%{HTTP_HOST}/$1 [NE,L]
我希望能够使用以下网址
访问该文件http://www.punchedin.com/home/hello%2520world.txt
但它总是返回404错误。
我对我的问题有一个部分答案,要让它返回我必须像这样对URL进行双重编码的文件......
http://www.punchedin.com/home/hello%252520world.txt
如何避免对网址进行双重编码?
答案 0 :(得分:0)
要解决这个问题,我需要避免对URL进行双重解码。为了实现这一点,我将原始/ home重定向替换为使用THE_REQUEST的修改过的。
我替换了这一行...
RewriteRule ^home/(.*)$ /domain/%{HTTP_HOST}/$1 [NE,L]
有了这些......
RewriteCond %{THE_REQUEST} ^(\S*)\s/home/(\S*) [NC]
RewriteRule ^home/(.*)$ /domain/%{HTTP_HOST}/%2 [L]
THE_REQUEST是原始请求,因此尚未对其进行任何URL解码