htaccess:用加号和重定向替换hypen

时间:2015-07-10 23:53:29

标签: .htaccess mod-rewrite

我有一个关于重定向网址+在重定向之前用加号替换hypen的问题

http://www.example.com/new-items/school-first-item/school-second-item

我想将以上网址重定向到http://www.example.com/web/school+second+item

这是规则,我可以重定向,但不知道如何在301重定向之前用加号替换hypen

RewriteRule ^/?new-items/?([^/]+)/([^/]+) http://%{HTTP_HOST}/web/$2 [R=301,NC,L,NE]

2 个答案:

答案 0 :(得分:1)

尝试在之前添加此

RewriteRule ^new-items/?([^/]+)/(.*)-(.*)$ /new-items/$1/$2+$3 [L,R]

答案 1 :(得分:0)

良好做法是避免多次重定向到浏览器并尝试在同一请求中内部处理所有重写,然后为转换后的URL进行最后一次重定向。

您可以在根目录.htaccess中使用此规则:

RewriteEngine On

# replace new-items/[^/]+ by web and all the - by + **repeatedly**
RewriteRule ^(?:web|new-items/[^/]+)/([^-]*)-(.*)$ web/$1+$2 [DPI,E=redir:1]

# if env var is set and no more - left then do a final redirect to browser
RewriteCond %{ENV:redir} =1
RewriteRule ^web/[^-]+$ $0 [L,NC,R=301]

清除浏览器缓存后进行测试。