我在修复一些死链接的网站上工作;但是我的RedirectMatch
指令存在问题。
RedirectMatch 301 "/treatmentsgenuine-dermaroller(.*)" http://example.com/treatments/genuine-dermaroller-therapy
RedirectMatch 301 "/treatments/genuine-dermaroller(.*)" http://example.com/treatments/genuine-dermaroller-therapy
这些都是为了纠正页面写得不好的链接(顶部),并将请求重定向到此页面的原始URL(底部)。 URL在URL中有一个商标符号,因此我删除它是为了便于输入/使用。
唯一的问题是,当这两个规则都到位时,网站会返回错误500。如果我删除第二个,它工作正常。我和其他RedirectMatch
尝试添加htaccess时也遇到了同样的问题。
我试图在预感中添加[L]
标志,但这似乎没有产生积极的影响。
这是否有任何问题我无法看到?
是否允许多个RedirectMatch
指令?
答案 0 :(得分:1)
只用这一个替换两个规则:
RedirectMatch 301 ^/(treatments)/(genuine-dermaroller)((?!-therapy).*)$ /$1/$2-therapy
您的第二条规则也匹配目标网址并导致重定向循环。
答案 1 :(得分:0)
我设法找到的最佳解决方案是
RedirectMatch 301 "((treatmentsgenuine-dermaroller(.)-therapy)|(treatments/genuine-dermaroller(.)-therapy))" http://example.com/treatments/genuine-dermaroller-therapy
这样,URL的两个变体都由同一规则处理,阻止了@anubhava指向我的重定向循环。