我刚刚将我的网站移至新的固定链接结构,并且需要对某些网址执行以下操作。
我想参加决赛" slug"在数字之后
/Annuaire-Artisan-106-creation-complete-de-salle-de-bains.htm
将连字符替换为加号,并在没有最终.htm的情况下重定向到/travaux/new+slug+with+plus+signs
。
......所以
/Annuaire-Artisan-106-creation-complete-de-salle-de-bains.htm
成为
/travaux/creation+complete+de+salle+de+bains
我目前有:
RewriteRule ^Annuaire-Artisan-([0-9]+)-(.*)-(.*).htm$ /Annuaire-Artisan-$1-$2+$3.htm [L,R,NE]
...正确地将最后一部分中的连字符转换为加号:
/Annuaire-Artisan-106-creation+complete+de+salle+de+bains.htm
但我找不到第二个RewriteRule来忽略最初的Annuaire-Artisan-106-
和最终.htm
并重写为/travaux/creation+complete+de+salle+de+bains
非常感谢任何帮助:)
答案 0 :(得分:1)
首先,在此阶段不要使用R|redirect
标志,因为客户端将为每个替换的连字符发出新请求。搜索引擎也是如此,这可能对排名不利。而是单独使用L
标志,或者N|next
给出
RewriteRule ^(Annuaire-Artisan-[0-9]+)-(.*)-(.*)\.htm$ /$1-$2+$3.htm [N=100,NE]
N=100
将循环限制为最多100个连字符。如果您愿意,可以将其调整为更低。
然后,以下规则将删除.htm
并替换前导部分。它采用类似的模式,现在,它将客户端重定向到新的URL
RewriteRule ^Annuaire-Artisan-[0-9]+-(.*)\.htm$ /travaux/$1 [R,L,NE]
如果一切正常,您可以将R
替换为R=301
(permanent redirect)。 从不使用R=301
进行测试。