将一条路径转发到另一条路径并将空格转换为连字符

Forward one path to another AND convert spaces to hyphens along the way

正在努力改变 https://www.example.com/search/label/my%20search%20termhttps://www.example.com/tag/my-search-term

根据下面@anubhava 的回答,选项 2 有效:

RewriteEngine On
RewriteRule ^search/label/(\S+)[-\s]+(\S+)$ /tag/- [NE,NC,L,R=301]
RewriteRule ^search/label/(\S+)$ /tag/ [NE,NC,L,R=301]
RewriteRule ^(search/label/\S+)\s+(\S+\s.*)$ /- [NC,L]

谢谢!

能否请您尝试按照所示示例编写。请确保在测试您的 URL 之前清除浏览器缓存。

RewriteEngine ON
RewriteRule ^search/label/([^\s]*)\s([^\s]*)\s(.*)/?$ tag/-- [NE,R=301,L]


或在此处使用 \S:请确保您一次仅将上述规则或以下规则放在一起。

RewriteEngine ON
RewriteRule ^search/label/(\S*)\s(\S*)\s(.*)/?$ tag/-- [NE,R=301,L]

您可以在站点根目录 .htaccess 中尝试这些递归规则:

选项 1:

RewriteEngine On

RewriteRule ^(search/label/\S+)\s+(\S+\s.*)$ /- [N,NC,DPI]

RewriteRule ^search/label/(\S+)[-\s]+(\S+)$ /tag/- [NE,NC,L,R=301]

RewriteRule ^search/label/(\S+)$ /tag/ [NE,NC,L,R=301]

选项 2:

RewriteEngine On

RewriteRule ^search/label/(\S+)[-\s]+(\S+)$ /tag/- [NE,NC,L,R=301]

RewriteRule ^search/label/(\S+)$ /tag/ [NE,NC,L,R=301]

RewriteRule ^(search/label/\S+)\s+(\S+\s.*)$ /- [NC,L]