htaccess重写并删除单词空间

时间:2014-03-23 08:59:40

标签: php regex .htaccess mod-rewrite

我有重写的问题和单词之间的空格,例如我的网址看起来像这样

http://xxxsite.com/search/test-test2/

并且我用

重写了这个
RewriteRule ^search/([A-Za-z0-9-\s]+)/$ index.php?mode=search&q=$1&type=text [L]

但现在我可以在谷歌网站管理员工具中看到一些重复的网址作为问题

http://xxxsite.com/search/test-test2/
http://xxxsite.com/search/test test2/

因为你可以看到第二个网址有问题,我需要删除/替换空间 - 如上例所示

我尝试将带空格的网址重定向到新的

RedirectMatch 301 ^/search/(.*)\s(.*)/$ http://xxxsite.com/search/$1-$2/  

但由于某种原因这不起作用..

有机会删除空间并替换它

1 个答案:

答案 0 :(得分:1)

您可以使用此规则以连字符递归替换所有空格:

RewriteRule "^([^ ]*) +([^ ]* .*)$" /$1-$2 [L]
RewriteRule "^([^ ]*) ([^ ]*)$" /$1-$2 [L,R=301]