我有一个相当奇怪的情况,我们的旧 URL 以结尾.-detail
并且需要更改为-detail
.
例如:
example.com/product.-detail
需要改成example.com/product-detail
换句话说,.
需要删除。
我想一个简单的 301 规则就可以解决问题,但我无法让条件字符串通过
RewriteRule ^$.-detail https://www.example.com/$1-detail [R=301,L]
请问这样做的正确方法是什么?
正则表达式几乎没有问题:
$
(字符串结尾锚点)在错误的位置。这应该在正则表达式的末尾(你想.-detail
在 URL 路径的末尾匹配,即。\.-detail$
)。$1
反向引用总是空的。模式(第一个参数)应该更像这样
RewriteRule
:(
^
start-of-string anchor) 不是必需的,因为默认情况下正则表达式是贪婪的并且点匹配“一切”。(尽管如果它能让你更容易阅读,你也可以包括它。)然后反向
$1
引用包含与带括号的子模式匹配的 URL 路径部分(.+)
。您可以捕获点之前和之后的两个部分,以节省在substitution中重复文字字符串。例如:
反向引用仅包含从模式中的第二个捕获组捕获的
$2
字符串。-detail
RewriteRule