0

我的文件系统中有以下文件

/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]

我希望能够使用以下 URL 访问该文件

http://www.punchedin.com/home/hello%2520world.txt

但它总是返回 404 错误。

我对我的问题有部分答案,要让它返回文件,我必须像这样对 URL 进行双重编码......

http://www.punchedin.com/home/hello%252520world.txt

有什么想法可以避免对 URL 进行双重编码吗?

4

1 回答 1

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 解码

于 2013-04-02T02:43:33.997 回答