您可以在.htaccess
要替换全部的文件-
具有+
发生在/search/
请求的URL中的路径段:
RewriteRule ^(search/[^-]*)-([^-]*-.*) /$1+$2 [N]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]
第一个
RewriteRule
循环(内部),直到除1个连字符外的所有字符都替换为
+
. 第二个
RewriteRule
触发外部重定向,替换最后一个连字符。在您的示例中,如果只有1个连字符,则重定向将立即发生。
将302(临时)重定向更改为301(永久)-如果这是目的-只有在测试其正常工作后。
UPDATE: 如果存在多个连字符时重写循环(因此没有重定向)有问题(-
) 在请求的URL中,在循环的每次迭代中,您可能会遇到将PATH\\u信息附加到目标URL的问题。这可以通过DPI
第一个上的(放弃路径信息)标志RewriteRule
指令。例如:
RewriteRule ^(search/[^-]*)-([^-]*-.*) $1+$2 [N,DPI]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]
第一个上的斜杠前缀
RewriteRule
则不需要替换。