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

时间:2021-01-05 16:36:29

标签: apache .htaccess redirect mod-rewrite friendly-url

努力改变 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/$1-$2 [NE,NC,L,R=301]
RewriteRule ^search/label/(\S+)$ /tag/$1 [NE,NC,L,R=301]
RewriteRule ^(search/label/\S+)\s+(\S+\s.*)$ /$1-$2 [NC,L]

谢谢!

2 个答案:

答案 0 :(得分:1)

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

选项 1:

RewriteEngine On

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

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

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

选项 2:

RewriteEngine On

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

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

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

答案 1 :(得分:0)

您能否尝试以下操作,按照显示的示例编写。请确保在测试您的网址之前清除浏览器缓存。

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


OR 在此处使用 \S:请确保您要么在上面添加规则,要么一次只遵循一个规则。

RewriteEngine ON
RewriteRule ^search/label/(\S*)\s(\S*)\s(.*)/?$ tag/$1-$2-$3 [NE,R=301,L]
相关问题