我试图用+符号替换所有%20,但是当url以/ some / dir /开头时。例如:
http://mydomain.com/some/dir/replace%20here
应重定向到
http://mydomain.com/some/dir/replace+here
但
http://mydomain.com/test/dir/replace%20here
不应取代%20
到目前为止,我有:
RewriteCond %{REQUEST_URI} ^(/some/dir/)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1$2+$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1+$2 [L,R=301,DPI]
但仍然会替换/ test / dir中的%20
我错过了什么?
谢谢!
答案 0 :(得分:1)
您的规则不正确,而且所有Apache版本都不支持DPI
标志。将您的重写规则更改为:
RewriteRule ^(some/dir)/([^\s%20]+)(?:\s|%20)+([^\s%20]+)(.*?)/?$ $1/$2+$3$4 [L,NC,R=301]
RewriteRule ^(some/dir)/([^\s%20]+)(?:\s|%20)+ $1/$2 [L,NC,R=301]