嗯,我确实有一个解决方案,但我不太喜欢它......
这将用破折号替换所有下划线,并使用 301 状态代码重定向,
这是“永久移动”。 (当然你也可以用它来替换任何其他字符)
另外,它应该是第一条规则(对于 .htaccess 文件中的 ex),因为第一行实际上是一个循环,它再次遍历所有规则(因为 N 标志)
RewriteRule ^/redirect/from/([^_]*)\_(.*)$ /redirect/from/thisisthethingwedontneed$1-$2 [N,L]
RewriteCond %{REQUEST_URI}(这是我们不需要的)+
RewriteRule (thisisthethingwedontneed)+(.*) /url/to/redirect/to/$2 [NC,QSA,R=301]
解释:
第一行:
'redirect/form' :基本路径或您要从中重定向的任何内容。它应该包含在第二部分中,以便能够在下一次循环运行时匹配它
第一部分:'替换(不是下划线)后跟一个下划线,然后是(任何东西)'捕获第一部分和最后一部分以供以后使用
第二部分:在捕获的第一部分之前插入一些您的网址中可能找不到的文本,然后附加第一部分,然后是破折号,然后是第二部分
标志:
N :在此之后,再次执行,再次执行所有重写规则,但使用更改后的 url
L :如果有匹配,请停在这里(这两个标志实际上使您对第一个标志的期望达到了。)
第二行
下一条规则的条件:只有在请求uri中可以找到之前定义的字符串时才执行下一条规则,至少一次
第三行
第一部分:匹配并捕获任何出现的有趣字符串,并捕获所有内容
之后
第二部分:将第二部分附加到我们想要重定向到的任何路径(忘记有趣的字符串)
标志:
NC:不区分大小写
QSA:附加任何查询字符串
R=301: 永久移动重定向