.htaccess转换所有'+';至'-';在一个301重定向中
目标 我想替换所有URL的“+”符号,并将它们转换为“-”。URL中可以有任意数量的“+”并且可以有任意数量的斜杠。我不想重写搜索页面 示例 每个示例的第一行是原始URL。第二个是我想要的301重定向URL.htaccess转换所有'+';至'-';在一个301重定向中,.htaccess,redirect,.htaccess,Redirect,目标 我想替换所有URL的“+”符号,并将它们转换为“-”。URL中可以有任意数量的“+”并且可以有任意数量的斜杠。我不想重写搜索页面 示例 每个示例的第一行是原始URL。第二个是我想要的301重定向URL https://domain.co.uk/used+cars https://domain.co.uk/used-cars https://domain.co.uk/accessories/car+accessories/ferrari+accessories https://domain
https://domain.co.uk/used+cars
https://domain.co.uk/used-cars
https://domain.co.uk/accessories/car+accessories/ferrari+accessories
https://domain.co.uk/accessories/car-accessories/ferrari-accessories
https://domain.co.uk/accessories/car+repair+supplies/old+cars/even+older+cars
https://domain.co.uk/accessories/car-repair-supplies/old-cars/even-older-cars
到目前为止
这段代码可以工作,但我可以从Firefox开发工具中看到,它实际上为遇到的每一个“+”都创建了301重定向。这可以在一个301重定向中完成吗
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:,|\+)+(.+?)\sHTTP [NC]
RewriteCond %{REQUEST_URI} !^/search
RewriteRule ^ /%1-%2 [L,NE,R=301]
您可以使用这两条规则将每个
+
替换为-
:
RewriteEngine On
# executes repeatedly as long as there are multiple + in URI
RewriteRule "^([^+]*)\+([^+]+\+.*)$" $1-$2 [N,DPI]
# executes when there is a single + in URI
RewriteRule "^([^+]*)\+([^+]*)$" /$1-$2 [L,R=301,NE]
确保将这些规则放在site root.htaccess中的其他规则之前,并确保从新浏览器进行测试