代码之家  ›  专栏  ›  技术社区  ›  Mark

.htaccess在一个301重定向中将所有“+”转换为“-”

  •  1
  • Mark  · 技术社区  · 6 年前

    瞄准

    我想替换所有URL的“+”符号并将它们转换为“-”。URL中可以有任意数量的“+”,也可以有任意数量的斜杠。我不想重写搜索页。

    示例

    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
    

    到目前为止

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:,|\+)+(.+?)\sHTTP [NC]
    RewriteCond %{REQUEST_URI} !^/search
    RewriteRule ^ /%1-%2 [L,NE,R=301]
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   anubhava    6 年前

    您可以使用这两个规则来替换每个规则 + 具有 - :

    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中保留这些规则,并确保从新浏览器进行测试。

    推荐文章