如何在mod_rewrite中使用[NE]

时间:2013-04-02 01:23:19

标签: .htaccess mod-rewrite

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

/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

如何避免对网址进行双重编码?

1 个答案:

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