用htaccess中的hypen替换%20

时间:2015-09-23 17:53:17

标签: regex apache .htaccess mod-rewrite

使用连字符替换%20的以下代码无法正常工作。有时候它有效,有时却没有,如果标题中有数字,则数字后面的空格不会被替换。任何帮助? 例如。 他今年30岁 他-IS-30%20年%20old

RewriteEngine On
RewriteCond %{THE_REQUEST} (\s|%20)
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]

1 个答案:

答案 0 :(得分:2)

而不是那些复杂的替换尝试这两个规则用连字符替换所有空格:

RewriteEngine On

RewriteRule "^(\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302]

RewriteRule "^(\S*)\s+(\S*\s+.*)$" $1-$2 [L]

# remove multiple hyphens
RewriteRule ^(.*)-{2,}(.*)$ /$1-$2 [L,R=302]