我需要创建.htaccess
重定向,如果用户输入网址www.olddomain.com/bonus
,则将其重定向到www.newdomain.com/bonus
,将旧域的任何其他网页或根目录重定向到www.newdomain.com
有一段时间我一直在使用这段代码来实现它
RedirectMatch 301 ^/bonus/ http://www.newdomain.com/bonus/ [L]
RedirectMatch 301 ^/ http://www.newdomain.com/ [L]
但是从上周开始它只会导致内部服务器错误。
我已经发现错误是由每行[L]
引起的。如果我删除它,我没有收到任何错误,但即使他转到www.newdomain.com
,用户也会被重定向到www.olddomain.com/bonus
。
我该如何解决这个问题?
答案 0 :(得分:1)
RedirectMatch 301 ^/bonus/ http://www.newdomain.com/bonus/ [L] RedirectMatch 301 ^/ http://www.newdomain.com/ [L]
这些指令永远不会奏效,所以很难说你为什么突然收到错误。
正如您所建议的那样[L]
标志是导致500内部服务器错误的原因。这是无效的语法 - 但这总是是无效的语法!? RedirectMatch
是mod_alias指令。然而,尾随标志(例如[L]
)是mod_rewrite(即RewriteRule
)功能。
即使他去了
www.olddomain.com/bonus
但这些指令也不会重定向上述URL。它只会重定向www.olddomain.com/bonus/
( 一个尾部斜杠)。如果需要匹配上面的URL,则需要从指令中删除尾部斜杠。例如:
RedirectMatch 301 ^/bonus http://www.newdomain.com/bonus
RedirectMatch 301 ^/ http://www.newdomain.com/