只有当URL以某些单词开头时,htaccess才会替换空格

时间:2012-11-27 15:25:09

标签: regex apache .htaccess mod-rewrite

我试图用+符号替换所有%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

我错过了什么?

谢谢!

1 个答案:

答案 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]